MySQLの闇 文字コードlatin1 | ライタス株式会社
とあるホスティングに構築しているMySQLを、システム構築込みで業者さんにリプレースを丸投げすることになり、その手伝いをするハメに陥っております。 担当さんが、現在とっているバックアップを、そのまま業者さんに渡したら、 「文字化けしているので、文字化けしていないデータを下さい」 と言われたらしく、なんとかしてほしいと頼まれてしまいました。 私、MySQLは専門外なんですけど。・゚・(ノ∀`)・゚・。 ソレぐらい何とかしろよ・・・・ しかも、本番リリースが翌週頭に(ry って感じなので、特急作業となりました。 さて、調べたところ、現在のデータベースの文字コードはlatin1という文字コードで作られているようでした。(調べる方法は以下) > show variables like 'character_set%'; どうやら、latin1で作られている領域に、無理やりUTF8の文字コードのデータを突っ込んでいるようでして、 この風習は結構昔からあるみたいです。(今思えば無茶苦茶です なんで動くんだ・・・?) ダンプしたファイルは、そのままではインポートできないらしく、結構困ったちゃんです。 最近は、ちゃんとUTF8がサポートされているようなので、作成時点で気がつけば、 大丈夫なんでしょうが、今回みたいなマイグレーションでは、ひどい目にあう確率UP。 というわけで、何とかしようと調べました。(結構事例ありますね・・・みんな苦労してるんだなぁ) 参考にしたサイトは以下のサイト。 http://d.hatena.ne.jp/kusakari/20071113/1194920895 まずは、ダンプを取ります。 コマンドは以下。 mysqldump -u root -–default-character-set=latin1 -c -n -d [DB名] > [ファイル名] nkfコマンドを使って、latin1 -> utf8に変換すれば、なんとかなる・・・ということらしいので、 やってみたら、nkfコマンドがインストールされていませんでした。 サイトを参考にnkfをインストールして、 h...