unicodeの取り扱いについて。No.14287
pikkolo さん 03/03/14 01:55
 
秀丸ではunicodeのテキストファイルを普通に読みこんだ場合、文字化けしてしまい
ますがその原因らしきものがわかったので報告します。

まず失礼だとは思いましたが、unicode文章の取り扱いが正常にできるxyzzyと言うエ
ディタと比較させていただきました。

まず秀丸で"天丼"と言う文章を書きutf-8で保存しました。
それをバイナリエディタで開くと
E5 A4 A9 E4 B8 BC
になります。
次にxyzzyで"天丼"と言う文章を書きutf-8で保存しました。
それをバイナリエディタで開くと
EF BB BF E5 A4 A9 E4 B8 BC
になります。

つまりxyzzyではEF BB BFと言う3バイトのデータが始めに入ります。
これはどの文章でも同じでunicodeで保存すれば必ずこの3バイトが入ります。

xyzzyで保存したテキストファイルのほうで秀丸,xyzzy両方で読みこみましたら両方
で自動的にutf-8になり、文字化けしませんでした。
秀丸で保存したほうは両方共文字化けしました。

おそらく秀丸ではこの3バイトのデータがutf-8で保存しても書きこまれないため、
文字化けすると思います。

大変失礼な比較方法ですがあえて書かせていただきました。
次のバージョンアップの参考にと願っております。

[ ]
RE:14287 unicodeの取り扱いについて。No.14289
dszhm さん 03/03/14 11:03
 
>つまりxyzzyではEF BB BFと言う3バイトのデータが始めに入ります。
>これはどの文章でも同じでunicodeで保存すれば必ずこの3バイトが入ります。

  「EF BB BFと言う3バイトのデータ」というのはUTF-8での
 Byte Order Mark ですよね?

>xyzzyで保存したテキストファイルのほうで秀丸,xyzzy両方で読みこみましたら両方
>で自動的にutf-8になり、文字化けしませんでした。
>秀丸で保存したほうは両方共文字化けしました。
>
>おそらく秀丸ではこの3バイトのデータがutf-8で保存しても書きこまれないため、
>文字化けすると思います。

  UTF-8 だったら、無条件に Byte Order Mark を付加する、というのは、
 不具合が発生することもあるのではないでしょうか?

>大変失礼な比較方法ですがあえて書かせていただきました。
>次のバージョンアップの参考にと願っております。

 

[ ]
RE:14289 unicodeの取り扱いについて。No.14295
秀丸担当 さん 03/03/14 19:10
 
>  「EF BB BFと言う3バイトのデータ」というのはUTF-8での
> Byte Order Mark ですよね?

そうですね。秀丸では読み込み時には自動判別していますが、書き込
み時には付けていません。
UTF-16のBOMは FF FE か FE FF なので自動判別のためにも使われるこ
とがあるので、書き込みもしてます。
UTF-8の場合はBOMは本来必要でなく、EF BB に続く文字も別の文字コ
ードかもしれないので自動判別に使うもの本当は適切ではないです。
秀丸でも自動判別してしまっていますが。
秀丸にBOMを付けるかどうかの選択があったほうがいいかもしれないで
す。

秀丸でUnicodeが化けるのは、開くのダイアログで明示的に文字コード
を指定していないか、[その他]→[動作環境]→[編集]→[文字コードの
自動認識をする]がチェックされていないためではないでしょうか。


[ ]
RE:14295 unicodeの取り扱いについて。No.14296
でるもんた さん 03/03/14 19:23
 
> UTF-8の場合はBOMは本来必要でなく、EF BB に続く文字も別の文字コ
> ードかもしれないので自動判別に使うもの本当は適切ではないです。
> 秀丸でも自動判別してしまっていますが。
> 秀丸にBOMを付けるかどうかの選択があったほうがいいかもしれないで
> す。

UTF-8 では BOM はつけないのが正しいらしいです。
原典に当たっていないのですが、たとえば、turukame.3:01393 で紹介された
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/utf-8.7.html
などが参考になるかと。

[ ]
RE:14295 unicodeの取り扱いについて。No.14297
ひろ さん 03/03/14 19:43
 
 秀丸担当さん今日は、ひろです。
> 秀丸でUnicodeが化けるのは、開くのダイアログで明示的に文字コード
> を指定していないか、[その他]→[動作環境]→[編集]→[文字コードの
> 自動認識をする]がチェックされていないためではないでしょうか。
 今回の「天丼」の場合は、UTF-8 の自動認識を ON にしていても誤認識しま
す。自動認識 (特に今回はたった 2 文字だし) に限界があるのは致し方ない
ので、単なる報告です。

[ ]
RE:14297 unicodeの取り扱いについて。No.14305
秀丸担当 さん 03/03/17 18:55
 
> 今回の「天丼」の場合は、UTF-8 の自動認識を ON にしていても誤認識しま
>す。自動認識 (特に今回はたった 2 文字だし) に限界があるのは致し方ない
>ので、単なる報告です。

「天丼」の2文字だけでは自動判別できてませんでした。
文字数が少ないと限界のようです。

[ ]