まめ畑

ゆるゆると書いていきます

文字に悩まされる

今日は他の研究室にいって、MySQL文字コードの問題について格闘して
きました。
本当に難しいですね、日本語って。
まず、大量のINSERT文を実行しないといけなかったのですが、MySQL
ツールから実行しようとしたら日本語でエラー・・・・。
で、コマンドプロンプトからはもちろん無理。。。。
SNSツールの文字コードがUTF8なので、もちろん挿入する物も、文字コード
は同じなのですがコマンドプロンプトSJISしか対応していないので
化けます・・・。

今回の最大の問題は、LinuxではなくWindows上でサーバ構築をするところに
あります。
まず、WindowsがSJISを基本としている事。でも、確か内部文字コードはUTF16
だったかな。
で、DBは簡単にUTF8にセットできるはずなのですが、設定ファイルに書き込んでも
一部Latin1になったままで変更されなかったのでSQL文で変更して解決。
で、各種テーブルも文字コードSQLで変更。
ここで問題、どうやって挿入しよう・・・・・。
とりあえず、MySQLのツールは使えない。
という事で、Telnetで直接対話・・・
そしたら、DBが何語でしゃべってるかわからなかったので、文字コード
変更しながらトライしましたが無理でした・・・
あれは何語だ・・・???

そこで、phpMyAdminを使ってWEBベースで挿入だ!
という事で、早速導入w
簡単に設定を済ませて実行したところ、UTF8に対応しているし、なんと
文字コードの変換にも対応しているのです><v
でも、感動するまでも無くPHPのmb_Stringを使えば簡単です。
でも、こいつ標準で入ってないし設定はいるしで意外と厄介者。
でも、今のサーバと昔のサーバでXOOPSMovable Typeを導入した時に
散々いじったので問題ないのですが、こいつの設定とDBやApache文字コード
設定が上手くかみ合わないと文字化けはするし、原因究明も難しいし・・・・。
でも、今回は1種類のみで動作させるのでここの問題はなさそう。
で、いざ挿入!と思ったのですが。。。失敗。。。。。
Versionを変更しても無理・・・・・

ここからはphpMyAdminPHPソースの解析を始めました。。。。
PHPなんて触った事無いのに。。。
でも、わかりやすいですね><
Perlなんかよりも理解しやすく、慣れてくると違和感無くチェック出来るように
なってきましたw
で、エラーを公開もとのFAQで調べたり他の事例を探したりしましたが
結構出ているエラーのようです。
で、散々調べた結果は・・・・・・・・
フォームからデータが全く飛んでいない!!!!
そりゃぁ、パラメータエラーが出るよね・・・・。

でも、パラメータエラーの割にはデータが無いというエラーのほうがいいのでは・・・。
でも、あのソースの書き方なら仕方ないか・・・・
で、結局SQL文をハードコーディングして実行する事にw
色々試した結果なぜか飛ばないし・・・・。
他の、フォームから飛ばそうにもTokenなんて小細工をしているので断念。。。。

でも、あの設定ファイルの文字コードをUTF8にしないと・・・・。
他の部分は英語だからまだいいか???

WindowsでUTF8ベースのシステムは難しい。。。
Fedoraの時は慣れてなかったから大変だったけど、今回はもっとしんどかった。。

日本語ってマジで難しい><、