[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:16282] nkf -g



いまいです。

nkf -g でファイルの文字コードを guess するときに、おかしな挙動を発見し
ました。

$ echo -ne "\xe3\x80\x80" > U3000.u8
$ hd U3000.u8
00000000  e3 80 80                                          |...|
00000003
$ nkf -g U3000.u8
UTF-8
$ nkf -g U3000.u8 U3000.u8
U3000.u8:UTF-8
U3000.u8:UTF-8
$ echo >> U3000.u8
$ hd U3000.u8
00000000  e3 80 80 0a                                       |....|
00000004
$ nkf -g U3000.u8
UTF-8
$ nkf -g U3000.u8 U3000.u8
U3000.u8:UTF-8
U3000.u8:EUC-JP
         ^^^^^^ ???
となります。

"\xe3\x80\x80" は全角の空白です。上のは同じファイルを 2 回指定してます
が、別のファイルでも間違うときは間違います。引数に指定する順序も関係し
ているようです。

$ echo -ne "\xe3\x80\x80" > U3000.u8-1
$ echo -ne "\xe3\x80\x80" > U3000.u8-2
$ nkf -g U3000.u8-1
UTF-8
$ nkf -g U3000.u8-2
UTF-8
$ nkf -g U3000.u8-?
U3000.u8-1:UTF-8
U3000.u8-2:UTF-8
$ echo >> U3000.u8-2
$ nkf -g U3000.u8-2
UTF-8
# 単体では OK。
$ nkf -g U3000.u8-?
U3000.u8-1:UTF-8
U3000.u8-2:EUC-JP
           ^^^^^^ ???
$ nkf -g U3000.u8-1 U3000.u8-2
U3000.u8-1:UTF-8
U3000.u8-2:EUC-JP
           ^^^^^^ ???
$ nkf -g U3000.u8-2 U3000.u8-1
U3000.u8-2:UTF-8
U3000.u8-1:UTF-8
# これは OK。

U3002(「。」) だけでは再現しないけど、U3059 + U3002(「す。」)だと再現
したり…何か分かるでしょうか。
--
Nobuhiro IMAI <nov@xxxxxxxxxxxx>
Key fingerprint = F39E D552 545D 7C64 D690  F644 5A15 746C BD8E 7106