水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 秀丸β版で UTF-8 の保存が変なときがある

秀丸β版で UTF-8 の保存が変なときがある

2003年10月10日(金曜日)

秀丸β版で UTF-8 の保存が変なときがある

条件が良く分からないのですが、秀丸4.00β20 でテキストを UTF-8 で保存したとき、U+0080~U+00FF の範囲の文字がおかしくなることがあります。たとえば "é" は U+00E9 の文字ですが、これは UTF-8 で保存すると0xC3 0xA9 となるのが正解です。

※110xxxxx 10xxxxxx に 11101001 を当てはめて 11000011 10101001 となります。

ところが、これがたまに 0x1A 0xE9 というバイト列で保存されてしまうことがあります。何故か秀丸はこれを普通に読めるのですが、ほかのエディタで読むと化けますし、なにより .NET Framework の System.Xml のパーサが不正なバイト列としてエラーを出してしまいます。

※Microsoft には Unicode Web Traversal の苦い経験がありますので、この辺りの処理は堅くしているのでしょうね。

今まではこんなことはなかったので、4.00β特有の現象だと思うのですが、困ったことに再現条件が分かりません。必ずそうなるというわけではなく、ちゃんと 0xC3 0xA9 で保存されることもあります。どうもファイルの長さや前後の文字列の種類などによって左右されるようなのですが、詳細は不明。確実に再現するファイルがあればバグ報告できるのですが、こんな様子では何とも。

※まあ、とりあえず数値文字参照で書いておくようにすれば問題は起きないと思うので、その方向で様子見。

関連する話題: 秀丸エディタ

最近の日記

関わった本など