犯人は半角数字? | TERUのブログ

TERUのブログ

つれづれに

先週のこと。

「美里の蓋」という作品だけ、なぜか一太郎で文字化けするという話をしましたよね。

原因は一太郎がUTF-8で保存されたテキストを読み込むとき、誤判定することだろうというところまでは想像できたんですが、それが「美里の蓋」だけで起こる理由が謎だった。

というお話。

すると、art2さんが、ミステリーの謎を解くヒントをくださいました。

コードを判定するのは、テキストの最初のほうの文字列だろうから、テキスト冒頭あたりの文字に、なにか問題があるかも。

ということなので、調べてみました。まずはなにもしない状態で、WZエディターでは正常に表示されているところをご覧ください。



このようになっております。この状態で一太郎へ読み込むと。



あーら、大変。文字化けバケラッタ。

では、WZエディターで一文字ずつ消しては保存し、それを一太郎で読み込むことを繰り返してみたら……

犯人がわかりました。それは数字「2」です。しかも半角のみ。全角の「2」は大丈夫。

論より証拠。「2」を消してみました。



このように「2016」を「016」にして保存。これを一太郎で読み込むと。



バンザーイ!

文字化け解消!

試しに、いままで正常に読み込んでいたUTF-8のテキストの冒頭に、わざと「2」を書き込んで保存すると、みごとに一太郎で文字化けしました。

再現できた。やはり「2」が原因なのだ。いや待て。「2」固有ってことはないだろう。試しにほかの半角数字を入れてみると、やはり文字化け。

ふむ。どうやら一太郎は、文章の冒頭に半角の数字が書き込まれていると、コードがUTF-8で書かれたテキストであると判断できないらしい。

しかも、その破壊力はすさまじく、テキストの冒頭から2400文字ほどのあいだに半角数字があると、文字化けバケラッタになる。

がっ!

ふたたび不思議なことが。

上のスクリーンショットをご覧いただくとわかるとおり、美里の蓋は一行目の「2」を削除すれば、そのすぐあとに「0」が続いていても、もう文字化けしない。

なぜ?

ためしに「(016年改訂版)」この部分をコピーして、いままで大丈夫だったテキストの一行目に貼り付けると、やっぱり文字化けバケラッタ。一行目どころか、二行目も三行目もダメ。70行目くらいまで進んだところにコピーすると(文字数としては2400文字くらい)、やっと文字化けしなくなる。

謎が増えた……

またまた試しに、新規文章を作り、冒頭に半角数字を入れ、そのあと一行だけ文字を書いて保存した、極めて短いテキストだと……

一太郎でちゃんと読み込む!

うわー。犯人は半角数字だと目星をつけたとたん、またまた迷宮入りの予感。犯人はわかったけど、犯行の手口(文字バケの法則性)がわからん!

でもまあ、これはJustsystemさんに、不具合として報告すべき事案だろうな。

一応、犯人がわかってよかった。

art2さん、いつもご教示ありがとーう!



■Kindle版の出版情報です。
------------------------------------------------
Amazonの販売ページへ
≫ 召しませMoney!5 Yの誘拐
≫ 神宮寺珈琲店 其の弐

お気に召したら、感想をお聞かせください。
≫ 召しませMoney!5 Yの誘拐 感想ボード
≫ 神宮寺珈琲店シリーズ感想ボード
------------------------------------------------

よろしくお願いします。