問題
保存される日本語データはDB上で文字化け
になった問題が起こった。
解決策
まずデータベースやテーブルがUTF-8対応できるかどうかを見る。
SHOW VARIABLES LIKE 'character_set%';
`character_set_server や character_set_database が utf8mb4 になっているか確認する。
+--------------------------+--------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+--------------------+
character_set_server
および character_set_database
が utf8mb4
になっていることを確認する。
他の値(例: latin1
)が設定されている場合、文字化けの原因となることがある。もしlatin1
だと、下記のようにデータベースの文字セットを変える。
ALTER DATABASE `your_database_name` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
データベースではなく、テーブルの文字セットを変えたい場合は、下記のように変える。
ALTER TABLE `your_table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
最後に、変更が反映されているかを確認する。
SHOW VARIABLES LIKE 'character_set%';