MySQLの文字コード設定の履歴
文字コードをUTF8にする
とにかくこれをやっとけばOK。
/etc/my.cnfに以下の記述を追加
[mysqld] default-character-set = utf8 skip-character-set-client-handshake ... [mysql] default-character-set = utf8
latin1でデータ入力してしまい、日本語が全部文字化けする
http://railspress.matake.jp/mysqlに既に存在するデータベース内部の文字コードを参考にしてUTF-8化に成功。一時はもうダメかと思った…。
#-c -nオプションつけるとうまくいかなかった $ mysqldump -u username -p -–default-character-set=latin1 -d mydatabase> database.dump # Eオプションつけるとダメだった。 $ nkf -w database.dump> database.utf.dump $ sed 's/latin1/utf8/g' database.utf.dump> database.utf.dump
nkfすごいね。
昔書いたやつ
MySQL4.1でも5.0でもmy.ini/my.cnfでdefault-character-set=utf8を設定しまくってるのに、phpMyAdminでマルチバイトが使えない。
- http://puchiko.lowtech.ne.jp/index.php?itemid=314
- http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#fb7...
以上を参照すると「skip-character-set-client-handshake」オプションを入れるとあら不思議、文字化けなくなるよと書いてるのに、むしろ今まで文字化けしなかったところまで化けた。
なーんかおかしいと思いながらとりあえず入力すると、今入力したやつは文字化けせずに表示されるではないか!
そう、ようするに今までUTF-8で保存してるとばっかり思ってたのに全然違うコードで保存されてたのね…。UTF-8→謎のコード→UTF-8っていう、変換がなされてたのね。これはショックだわ。