ここまできてやっと気付きました

文字化け不具合続きのphpBB、おかしいな〜こんなに文字化けするフォーラムシステムよく皆使ってるな〜と疑問が出てくるほどだったんですが、周りを見渡して、やっと気付きました。


おいらのphpBBは、PHPシステムにも関わらず、思い切りシフトJIS使ってたんです。UNIX上で動くスクリプトなんだから、シフトJISを考慮して処理が進むはずもありません。こんな日本語パッケージ、なんで配布されてるんだ??というグチはさておき、とにかくすべてEUC-JPにでも移行しなければなりません。一応言っておきますが、phpBB日本語版のパッケージのほとんどはEUC-JPなんだと思います。おいらは中でも珍しい役立たないシフトJIS版を運悪くダウンロードしていたんです。。。


パッケージのほうは言語システムの部分を上書きコピーするだけで済みそうなのですが、問題はデータベース。ユーザーの皆さんが書き込んだ内容、ユーザー情報がすべてシフトJISで記録されています。これらをEUC-JPにエンコードする必要があるのですが、おいらが使ってるサーバーは勿論UNIX系。データベースはMySQLを使っています。ということは、そのデータベースを操作するためのソフトウェアインターフェイスEUC-JPを使っているということになります。なにやらイヤ〜な予感…。


とにかく、文字コードシフトJISからEUC-JPにエンコードしながらすべてのデータをエクスポートすることにしました。まだコミュニティを開いてから一週間ちょいなんですが、そのデータ量は650KBにもなっとります。活発な議論がなされているということで、結構なことです。そんなことを思いながら、TeraPadを使って内容を確認したら、これまたおかしぃ〜/(><)/


シフトJISからEUC-JPへのエンコードでちょこちょこといらない文字、"\" 記号が混じったようです。調べてみると、EUC-JPでは "\" を特別なエスケープシーケンスとして扱っている模様。更にシフトJISでは、マルチバイトの2バイト目に "\" が来ることがあるみたいです(結構頻繁に)。ということは、2バイト目の "\" 記号をエンコーダーが感知して、"\\" に増やしているっつーことですな。そうすると、なにかしらの単語、たとえば、「構造」という単語が「構\造」となってしまうってワケなんです。


それなら、"\"記号を地道に削除していこう、ということで不慣れな手つきでTeraPadを使いながら作業をしてみました。"\"記号は文書内で頻繁に使われています。ActiveBasicソースコードなどが投稿されていると、ほぼ確実にその中に含まれているんです。こいつらは削除してはいけないので、無論"\"をすべて削除してしまうような一括置換はできません。ここからは地道な作業です。


え〜20分か30分かたったころでしょうか、この地道な作業が終わり、保存してっと…


・・・・・・・・・


TeraPad落ちました。


どうも、容量が大きすぎるのか、またもや文字コード不具合か、おいらの貴重なこの時間はなんだったんでしょう。泣けます。しょうがなく、Wordを使って再度チャレンジ。さすがに天下のマイクロソフトが作ったWord、ちょっとやそっとじゃ落ちませんでした。これで一息つけました。


ここからがデータベースのすり替えとphpBBシステムのEUC化ということになります。まったくもって、ここからが本番です。最後の最後で、動かなくなっちゃいましたじゃ話が済まされないんで、まずはフォーラムシステムをもう1つ作ってみて、データベースのほうももう1つ作ってみて、おいらのプラン通りにきちんと動くかを検証してみました。色々とつまづきそうな部分はあったんですが、無事動作確認ができたんで、今度は本物forumディレクトリの内容を変えるとともに、本物データベースを一括置換します。


・・・・・・・・・


おそるおそるDiscoversoftコミュニティを開いてみると、そこには見慣れたページが。成功です。今までネックになっていた投稿時の文字化けもすべて直っています。更に、お知らせメールの件名の文字化けまで解消されています。


てなことで、深夜3時までかかったEUC-JPへのエンコード作業は時間はかかったながらも大成功に終わりました。最近、夜更かしが過ぎているんで今日こそはと思っていたんですが、ダメでしたねぇ〜、気付いたらこの時間。


今日こそは早寝しますっっっ