DBぶっこわれ詳細

気に入ったらシェアしてくださいね

データベースがぶっ壊れた件について、いろいろと調べてみました。
まず、MySQLデータベースのデフォルトの文字コードは「utf-8」、つまりUnicodeに設定されているみたい。phpMyadminには少なくともそう表示されています。使っているレンタルサーバがTelnetが使えない設定になっているので、とりあえずこれは信用するしかない。
一度データベースを空にして再度Movabletypeの設定をし直し、テストでエントリを書いてみると、やっぱり文字化けする。エントリだけじゃない、blogのタイトルとか、日本語を使っているところはみんな文字化け。う〜ん。結局再度データベースを空にして、Movabletypeの設定をEUC-JPに直してやってみると無事文字化けせずに表示されるようになりました。
次に、どういう壊れ方をしているのかを調べてみる。
ふつう文字化けというと、1バイトの文字は表示されるけど、2バイト文字は全く表示されない、というのが常なんだけど、今回の文字化けは「??はxxvv甥xxxx」のように、2バイト文字でも表示されるものとされないものがある、という状態になっています。これはおかしいぞ、というわけで、アーカイブをみんな引っ張り出して、HexEditorを使ってバイナリを調べてみました。
文字コードは、バイナリレベルでは、「あ」だと「e3 81 82」のように記録されています。わかったのが、最初のe3の部分は問題がないのだけれど、8や9で始まる部分がすべて「3f」に置き換えられてしまっていて、文字を表示できないようになってしまっています。バイナリを変換すると、とりあえずひらがなだけは復旧できました。
とりあえずこれで修正をかけて、あとは手作業で少しずつエントリを復活させていくしかないみたいだ…。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)