kade

技術系の記事を書いていきます。

CakePHP: データベースの文字化け

CakePHPのdatabase.phpのdefaultのencodingの設定がなぜかコメントアウトされていて、そのままだとデータベースに突っ込まれるエンコードが「UTF-8 Unicode via latin 1」というものでした。

そのコメントアウトを外せば、その後はUTF-8で保存、呼び出しされるようになるのですが、逆にそうなると昔のデータが文字化けしてしまいます。

そこでmysqlのデータを書き出してUTF-8に変換するという作業が必要になった訳ですが、僕の取ったやり方を残しておきます。

1: Sequel ProというMac OS Appを使ってDatabase > View Using EncodingからUTF-8 Unicode via latin 1を選択

2: File > Exportでcsvとして出力

3: Sublime Text 2で開いて別名で保存

4: Sequel Pro で元のtableを選択した状態でFile > Importで先ほど別名で保存したcsvをReplaceでインポート。

以上で上手くUTF-8で保存されます。ポイントは3で、2で書き出したままのファイルをインポートしても、UTF-8で書き出されているわけではないので、同じ状態となってしまいます。

Web制作者のためのSublime Textの教科書 今すぐ最高のエディタを使いこなすプロのノウハウ

Web制作者のためのSublime Textの教科書 今すぐ最高のエディタを使いこなすプロのノウハウ