不可解な文字化け・その2
先日の不可解な文字化けについて、なかなか原因までにはたどりつかないが、とりあえず、どのように文字化けしたのかについては、少し見えてきた。
文字化けの直接の原因は文字コードにある。 たとえば丸数字などいわゆる機種依存文字が化けるのは、異なる文字セットの同じコード番号にそれぞれ別の文字が割り当てられているからだ。 また先日示したperlでの文字化けの再現例は、コード番号にいわば「ケタずれ」が起きたようなもので、そのために別の文字と誤認されるからだ。
そこで、該当文字のシフトJISコードをそれぞれ調べてみた。その結果が下の通りだ。
ようするに「よ」と「の」の1バイト目の「82」が何らかの理由で欠落したために、以下のコードの組み合わせがずれたものが、今回の文字化けだったようだ。 つまり、化けるメカニズムとしては「ケタずれ」の方だ。そのケタずれが1〜2字で止まったのは、シフトJISコードに「C」から始まるものがないからだと思われる。
実は原稿で、この「によって」「そのもの」の前には共通する同じ文字列があり、しかも文字化けする前までまったく同じ索引指定がしてあった。もちろん、XPressタグも同じものが入っていた。その終了タグから数えて2文字目がやられている。 だから、共通する位置の「82」が欠落あるいは無視されたことになる。いったいなぜそうなったのか。ここに今回のトラブルの焦点があるのではないかと思える。
そんなわけで、やっぱり索引指定の解除にともなう何らかのトラブルではないかと思えるが、再現テストでは再現しなかった。 また、同じ索引指定がほかのページも含めて計5か所あったのに、なぜ同じページ内の2か所だけが文字化けしたのか。さらに、タグの直後にも「82」があるのになぜ2文字目なのか、というのも疑問だ。
こういうわからないことって、けっこうハマる。うーむ……。
|