perl+MySQLで書かれた古いWebアプリをリプレースする件があるのですが、まず今登録されているデータをエクスポートしてくるところからはまりました。
いわゆるレンタルサーバ上で動いておりシェルは使えないため、webの管理画面からphpMyAdminを使ってエクスポートするようになっていました。
で普通にエクスポートするとデータが全部文字化け。
テーブルのエンコード設定を確認すると「latin1_swedish_ci」になっていました。
そういや昔のMySQLって、エンコード指定しないデフォルトの状況だと「latin1_swedish_ci」になるんだったかな?
perlのコードからDBの中身はEUCであることがわかっていたので、エクスポート時の文字コードをEUCに指定してみたり、エクスポートされて出力されたテキストファイルをEUCに変換したりしてみたのですが改善されませんでした。
で、ぐぐってみるとそのまんまな事例と解決法がありました。
8年前のエントリーで「XOOPS」の単語が時代を感じます。
latin1_swedish_ciで文字化け | Home and Abroad
http://waji-mart.com/homeandabroad/latin1_swedish_ci%e3%81%a7%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91/
エクスポートしてきたテキストを秀丸で開いて「欧文」で保存する、というものでした。
欧文で保存してから再度開きなおすと、今度はちゃんとEUCの文字コードが自動認識されて文字化けせずに開いてきました。
大変に助かりました。ありがたい!