【XAMPP】データベースから読み込んだTEXT型データの文字化け解決
データベースから読み込んだ日本語のTEXT型データが文字化けしてしまったときの 解決法をまとめておきます。
1. カラムの文字コードをチェック
phpMyAdminでカラムの追加をする場合、照合順序という項目があると思います。
これが文字コードの設定になっています。
デフォルトの場合(何も選択していない)、文字コードが
「latin7_general_ci」に設定されているので、こちらを「utf-8_general_ci」など、
日本語に対応した文字コードに変更します。
すでに追加してしまったデータはここを変更しても直らない場合があります。
2. XAMPPの設定ファイル変更
xampp/phpフォルダにあるphp.iniを設定します。次の8行のコメントアウトを外し、値を以下のように変更します。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
続いてxampp/mysqlフォルダを開き、my.iniファイルの変更をします。
「## UTF 8 Settings」とだけ書かれた行があるので、その下にある
次の4行のコメントアウトを外します。
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="C:/xampp/mysql/share/charsets
※init-connect=SET NAMES utf8のコメントアウトを外すと、自分の環境では
phpMyAdmminにアクセスした時MySQL server has gone awayエラーが出てしまいました。
あとセキュリティ的にも良くないらしいです。
続いて
[client][mysqldump][mysql]という3つのセクションを探して
それぞれ以下のように変更します。
[client]
# password = your_password
port = 3306
socket = "C:/xampp/mysql/mysql.sock"
default-character-set = utf8
[mysqldump]
quick
max_allowed_packet = 16M
default-character-set = utf8
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set = utf8
最後にmysqlを再起動すれば
文字化けが直っていると思います。
参考にしたサイト