DBぶっこわれ詳細

| コメント(0) | トラックバック(0)

データベースがぶっ壊れた件について、いろいろと調べてみました。
まず、MySQLデータベースのデフォルトの文字コードは「utf-8」、つまりUnicodeに設定されているみたい。phpMyadminには少なくともそう表示されています。使っているレンタルサーバがTelnetが使えない設定になっているので、とりあえずこれは信用するしかない。
一度データベースを空にして再度Movabletypeの設定をし直し、テストでエントリを書いてみると、やっぱり文字化けする。エントリだけじゃない、blogのタイトルとか、日本語を使っているところはみんな文字化け。う〜ん。結局再度データベースを空にして、Movabletypeの設定をEUC-JPに直してやってみると無事文字化けせずに表示されるようになりました。

次に、どういう壊れ方をしているのかを調べてみる。
ふつう文字化けというと、1バイトの文字は表示されるけど、2バイト文字は全く表示されない、というのが常なんだけど、今回の文字化けは「??はxxvv甥xxxx」のように、2バイト文字でも表示されるものとされないものがある、という状態になっています。これはおかしいぞ、というわけで、アーカイブをみんな引っ張り出して、HexEditorを使ってバイナリを調べてみました。

文字コードは、バイナリレベルでは、「あ」だと「e3 81 82」のように記録されています。わかったのが、最初のe3の部分は問題がないのだけれど、8や9で始まる部分がすべて「3f」に置き換えられてしまっていて、文字を表示できないようになってしまっています。バイナリを変換すると、とりあえずひらがなだけは復旧できました。

とりあえずこれで修正をかけて、あとは手作業で少しずつエントリを復活させていくしかないみたいだ...。

トラックバック(0)

トラックバックURL: http://www.noiselog.org/cgi-bin/mt/mt-tb.cgi/44

コメントする

最近のブログ記事

Movable Type 4 へようこそ!
このブログ記事は、Movable Typ…
Movable Type を利用してウェブサイトをリニューアルしました
私たちのウェブサイトは、Movable…
W53Hに機種変更
いままで使っていたau日立製端末"W51…