show variables like '%char%';
実行すると
character_set_server =latin1
になっている。
latin1ではなくutf8が正しい状態だが、
utf8に変更するにはmysqlの再起動が必要。
システムはもうオープンしていて、勝手に再起動できない。
何より、もうデータが登録されている。データは文字化けしていないか心配。
調べて見ると
ウムラウト等の特殊文字も漢字もシステム上では正しく表示されているし、
データをUTF-8形式でダウンロードすれば文字化けしていない。
問題なさそうだが、phpMyAdminでは文字化けして表示される。
sshで接続してコマンドベースでmysqlを操作した場合も文字化けしている。
トラブルがなければ大丈夫な状態
データベースが破損するようなトラブルに見舞われるようなことがなければ、
今のままで大丈夫。
しかし、mysqldumpで取得したバックアップファイルからデータベースを復元しようとすると
文字化け部分は復旧不能となる。
これでは不安なので、latin1をutf8にすることに決めた。
設定変更だけで済む?
データベースには utf8 で登録されていて、
見え方に問題があるので
character_set_server = utf8
にして、mysqlを再起動すれば解決すると思った。
実行してみると予想とは違った。
ウムラウト等の特殊文字と漢字がphpMyAdmin上に加えて、
システム上でも文字化けするようになった。まずいので、
character_set_server = latin1
に戻した。
データ変換を行う
失敗してみて、
character_set_server = utf8
にするのに合わせてデータの変換も必要と分かった。
幸いなことに、ウムラウト等の特殊文字と漢字はまだ
10数件しか登録されていない。そこで、
@ウムラウト等の特殊文字と漢字の正しい値をメモ書き
Acharacter_set_server = utf8にし、mysqlを再起動
B文字化けした箇所を@のメモを見ながら手作業で修正。
これでうまく行った。約30分で終了。
ちなみにAではmy.cnfファイルの[mysqld]に
character-set-server = utf8
を追加した。
最後に思うこと
mysqlのデフォルト値を utf 8にしてもらいたい。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image