むかしやってた映画のブログ( WordPress )のデータをこのブログに取り込もうとしたら、 mysqldump しといたデータが文字化けして読めなかった。 映画ブログのデータベースの文字コードは utf-8 にしてたけど、 Dreamhost の MySQL サーバーの defualt-character-set がおそらく latin1 になっていたと考えられ、 mysqldump するときに utf8 のデータが latin1 として export されてしまい文字化けを起こしていたっぽい。
vim で開いて e ++enc=utf8
してみたり、 nkr で変換しようと試みたり、ググって出てきた Perl のスクリプトで変換しようと試してみたけど直らなかった。この変換は MySQL 自身にやらせないとダメなのではと思い、以下を試したがダメ。
- [x] latin1 で DB 作成し latin1 で import 、 utf8 で export
- [x] latin1 で DB 作成し utf8 で import 、 utf8 で export
結局、 Stack Overflow にあった以下の方法で解決できた。
一旦文字化けしたまま utf-8 の文字列として import し、以下の SQL を流す。
UPDATE [table_name] SET [column_name] = CONVERT(BINARY CONVERT([column_name] USING latin1) USING utf8);
やっぱり MySQL で化けたデータは MySQL で直すしかないみたいだった。