第1回「さくらサーバーでutf8mb4を使う方法」MySQL 絵文字

 こんにちは。今回はさくらサーバーで絵文字(utf8mb4)の使い方に触れていきます。

 

  「🐭🐮🐯🐰🐱💛🏠⚡」こういった絵文字を使うには、「utf8mb4」を使います。  

目次

・さくらサーバーでの設定

・PHPファイルの「charset」を設定

 ・まとめ

  少しボリューム多めです。20分くらいかけて、ゆっくり読んでください。  

 


・さくらサーバーでの設定

さくらサーバーのphpmyadminを使うので、サーバコントロールパネルにアクセスします。 https://secure.sakura.ad.jp/rscontrol/

「ドメイン名」と「パスワード」を入力してログインします。

 

  

左のメニューから「データベースの設定」をクリックします。  

「管理ツール ログイン」をクリックします。 続いて「phpmyadmin」にログインします。  

 

MySQLのバージョンを確認します

「Version 5.5」以降でないと、絵文字(utf8mb4)は使えません。 5.5以前のバージョンを使っている人は、全てのデータをインポートしてバックアップをとり、全てのデータベースを削除する事で、MySQLのバージョンを選べるようになるようです。 必ず、バックアップを取ってからやってください。   「5.5」以降の方は、何もしなくても使えます。  

データベースの照合順序を変更します

さくらサーバーでは、「UTF-8」がデフォルトになってるのでしょうか。 これを「utf8mb4」へ変更します。

上のタブから「SQL」をクリックします。   SQL文を直接入力できる画面になります。 下記のSQL文を実行します。

ALTER DATABASE `データベース名` DEFAULT CHARACTER SET utf8mb4;

「`データベース名`」は、変更するデータベースの名前に変更してください。

 

テーブルの照合順序をutf8mb4 に変更

既にあるテーブルを「utf8mb4」に変更します。

下記を実行してください。

ALTER TABLE `テーブル名` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

テーブル名は、それぞれのテーブル名に変更して実行してください。

 

続いて、テーブルの中の「構造」から列を「utf8mb4」に変更します

 

種類がいくつかありますが、日本語なら「utf8_feneral_ci」か「utf8_unicode_ci」のどちらかでOKだと思います。

utf8_general_ciとutf8_unicode_ciの使い分け

mysqlのデフォルトはutf8_general_ciとなる。
utf8_unicode_ciの方があいまい検索可能だが、少し遅いとのことらしい。

utf8_general_ci

アルファベットの大文字・小文字は区別せずにマッチする。
ただし、区別しない文字は、半角は半角の大文字・小文字、全角は全角の大文字・小文字のみ。
半角小文字と全角小文字同士はマッチしない。

utf8_unicode_ci

下記がマッチする。
アルファベットの大文字・小文字(全半角混合)
ひらがなの大文字・小文字とカタカナの大文字・小文字 (例えば、’あ’で検索すると、’ぁ’, ‘ア’, ‘ァ’もマッチする)

引用元:Qiita

 

これでデータベース側の設定変更は終わりです。

参考サイト:・さくらのレンタルサーバーの MySQL で utf8mb4 を使う。

いつも参考にさせて頂いています。ありがとうございます。

 

続いて、データベース接続に関しても少々、変更が必要です。下に続きます。

 


・PHPファイルの「charset」を設定

あと少しです。

phpファイルからデータベースを操作するときに、接続する文字セットを変更します。

PDO接続の場合

/*** pdoDB接続 ***/
try{
	$pdo = new PDO(
		'mysql:dbname=' . データベース名 . ';host=' . ホスト名 . ';charset=utf8mb4',
		ユーザーネーム,
		パスワード,
		array(
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_EMULATE_PREPARES => false
		)
	);
} catch (Exception $e) {
	exit('データベース接続に失敗しました。'.$e->getMessage());
}

これが大事です。「utf8」やほかの場合は、書き直しましょう。

charset=utf8mb4

 

mysql_queryの場合

/*** mysqli_connectDB接続 ***/
$dbconn=mysqli_connect(ホスト名,ユーザーネーム,パスワード,データベース名);
mysqli_set_charset($dbconn,'utf8mb4');

こっちも「utf8mb4」に書き換えます。

 

これで、絵文字をデータベースに登録できるようになります。

ちなみにさくらサーバー上のphpmyadminでは絵文字が「?」と表示されますが、実際には絵文字(4バイト文字)が登録されているので、phpファイルで確認すると正常に表示されます。

 

参考サイト:PHP、MySQLで4バイトのUTF8を使うとき

 

 


・まとめ

3年前くらいから、ネット上でこういった絵文字💛🐱が存在しているのは知っていました。

Twitterなどで最初は広まったのではないでしょうか。

キーボード入力でも、絵文字がデフォルトで返還されるようになり、より多くの人に使われるようになりました。

 

さくらサーバーでは、絵文字が登録できない。???となってしまう。と思っていたのですが、調べると自分もできたので、皆さんもよければ参考にしてください。

 


 

今回の記事を書くにあたって参考にしたサイト

さくらのレンタルサーバーの MySQL で utf8mb4 を使う。

PHP、MySQLで4バイトのUTF8を使うとき

 

 

今回は以上です。お疲れさまでした。

,,,,,

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です