動作確認した環境は以下です。
- Ubuntu 18.04.3
- XAMPP for Linux 7.3.9
DBの文字コードの確認
MySQLモニタを起動して現在の文字コード設定を確認します。
1 2 | mysql -u root -p Passwordを入力します |
DBの文字コードを確認します。
1 | SHOW VARIABLES LIKE 'chara%'; |
僕の場合は以下のように表示されました。
Variable_name | Value |
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | latin1 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | latin1 |
character_set_system | utf8 |
character_sets_dir | /opt/lampp/share/charsets/ |
この中で以下項目の値を「utf8mb4」に変更します。
- character_set_client
- character_set_connection
- character_set_results
- character_set_server
DBの文字コードの変更
MySQLモニタを終了します。
1 | exit |
my.cnf(またはmy.ini)の設定を変更します。変更にはroot権限が必要です。my.cnfをviエディタで開きます。
1 | sudo vi /opt/lampp/etc/my.cnf |
[mysqld]にcharacter-set-server=utf8mb4
[client]にdefault-character-set=utf8mb4
を追加(または変更)して保存(:wq)します。
XAMPPウィンドウからMySQLを再起動して設定を有効化します。
再度、MySQLモニタを起動します。
1 2 | mysql -u root -p Passwordを入力します |
DBの文字コードを確認します。
1 | SHOW VARIABLES LIKE ‘chara%’; |
設定変更後は以下のように表示されました。対象の項目の値が変更されました。
Variable_name | Value |
character_set_client | utf8mb4 |
character_set_connection | utf8mb4 |
character_set_database | utf8mb4 |
character_set_filesystem | binary |
character_set_results | utf8mb4 |
character_set_server | utf8mb4 |
character_set_system | utf8 |
character_sets_dir | /opt/lampp/share/charsets/ |
エンコーディング設定
既存のテーブルのエンコーディングを修正します。文字コードをutf8mb4、照合順序をutf8mb4_general_ci(アルファベットの大文字小文字は区別しない。他は全て区別)に変更します。
1 | ALTER TABLE [テーブル名を入力] MODIFY [カラム名を入力] [データ型を入力] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
今後新たに作成するDBのデフォルトエンコーディングの設定方法は以下です。
1 | ALTER DATABASE [DB名を入力] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
今後新たに作成するテーブルのデフォルトエンコーディングの設定方法は以下です。
1 | ALTER TABLE [テーブル名を入力] DEFAULT CHARACTER SET utf8mb4; |
エンコード(エンコーディング)とは
データを別の形式に変換すること。符号化ともいう。通常は、人間が理解できる文字や音声、映像といったアナログ情報をコンピューターが認識できるデジタル情報に変換することを指す。音声や動画データの圧縮、データの暗号化などもエンコードにあたる。動画や音声では、再生に使う機器が対応している形式に変換する作業もエンコードと呼び、これらの変換に使うソフトウェアや機能はエンコーダーという。またエンコードされた情報を、人間が見たり、聞いたりできる情報に戻すことをデコードという。Webページや電子メールの文字化けは、エンコードとデコードの方式が異なる際に生じる。この場合、Webブラウザーやメールソフトのエンコードの設定で文字コードを変更すれば読めることがある。
出典:ASCII.jpデジタル用語辞典ASCII.jp