モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

古いWebアプリのMySQLからエクスポートで文字化け

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文字コードが自動認識されて文字化けせずに開いてきました。
大変に助かりました。ありがたい!


EUCのデータだからとEUCで出力しようとがんばってた方向が間違ってたようです。