MySQLで latin1_swedish_ci を utf8_general_ci に変換
MySQLで悩まされた文字化けについて。
誰が作ったか分からない旧システムのDBを見ていたら、
日本語(マルチバイト文字)の入ったフィールドが大概文字化けしている…。
それを使ったシステムはちゃんと日本語で表示しているのですが。
そのデータを新しく開発するシステムへ移行することになり、
文字コードの違いなんだろうなーと思って色々試してみるも、全く解決しない…。
とりあえず取得してからPHPで文字コード変換してもダメ、
最初に文字コード指定してからの取得もダメ。
DBの設定を見てみると、照合順序が「latin1_swedish_ci」という見慣れないもの。
まさかこれのせいかと思って調べてみるとそれらしい情報が出てきたのでやってみたけどダメ。
参考:MySQLでlatin1_swedish_ciの文字化けを解消する方法 - Web活メモ帳
更に色々と調べていると出てきたのがコレ。
参考:PHPMYADMINでの文字化けを解消する - 中途半端を極める
手順はこちら。
- 文字化けしているテーブルをSQLの形式でエクスポート
- エクスポートしたファイルを秀丸で開く
- 「名前を付けて保存」でエンコードを「欧文」にして保存(変換できない文字についてのメッセージでは「保存できない文字を置き換えて保存する」を選択)
- ファイルを一旦閉じて再度開く
- (文字コード、テーブル名等必要な調整を行って)実行
バッチリでした!
根本的な解決になっていない気はしますが、
今回のケースはこれで充分だったので、まあ、これで。