読者です 読者をやめる 読者になる 読者になる

まめ畑

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

文字に悩まされる

今日は他の研究室にいって、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の時は慣れてなかったから大変だったけど、今回はもっとしんどかった。。

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