LAMP環境でのWebアプリでフロント画面ではUTF-8で正常に表示されるが、phpMyAdminでの表示が文字化けしている場合がよくある。
下記のようにmy.cnfファイルを設定に追加してあげる必要がある。
/var/lib/mysql/bin/my.cnf or /etc/my.cnf
———————————-
[mysqld]
skip-character-set-client-handshake ←追加
default-character-set=utf8 ←追加
character_set_server=utf8 ←追加
[mysql]
default-character-set=utf8 ←追加
———————————-
[問題点]
skip-character-set-client-handshake、SET NAMES で文字化けなどの問題を解決してしまうと、SQLインジェクションの脆弱性を生じる。これらのオプションやコマンドは、文字コードの設定を無理やり変えてしまうので、問題の表層だけ解決しまう可能性がある。
[mysqld]
skip-character-set-client-handshake ←追加
default-character-set=utf8 ←追加
character_set_server=utf8 ←追加
[mysql]
default-character-set=utf8 ←追加
———————————-
[問題点]
skip-character-set-client-handshake、SET NAMES で文字化けなどの問題を解決してしまうと、SQLインジェクションの脆弱性を生じる。これらのオプションやコマンドは、文字コードの設定を無理やり変えてしまうので、問題の表層だけ解決しまう可能性がある。
既に、phpMyAdminで文字化けしていたデータは、エクスポート後UTF-8に修復して再度INSERTし直してあげる必要がある。
Leave a Reply