nkf 2.0.6 チェック ― 2006年03月28日 07時35分38秒
nkf 2.0.6 がリリースされました。そのため早速チェックしてみました。
nkf 2.0.6 の -e オプションは eucJP-ascii ベースとなっています。
そこで
http://www.opengroup.or.jp/jvc/cde/appendix.html
のマッピングとの比較を行いました。
とりあえず U+0080 から U+00FF までの範囲を確認したところ、eucJP-ascii では次の変換が行われるようです。
EUC-JP UNICODE
0xA1F1 U+00A2
0xA1F2 U+00A3
0xA1EF U+00A5
0xA1F8 U+00A7
0xA1AF U+00A8
0xA2CC U+00AC
0xA1EB U+00B0
0xA1DE U+00B1
0xA1AD U+00B4
0xA2F9 U+00B6
0xA1DF U+00D7
0xA1E0 U+00F7
0x8FA2B1 U+00B8
0x8FA2B4 U+00AF
0x8FA2C2 U+00A1
0x8FA2C3 U+00A6
0x8FA2C4 U+00BF
0x8FA2EB U+00BA
0x8FA2EC U+00AA
0x8FA2ED U+00A9
0x8FA2EE U+00AE
0x8FA2F0 U+00A4
0x8FA9A1 U+00C6
0x8FA9AC U+00D8
0x8FA9B0 U+00DE
0x8FA9C1 U+00E6
0x8FA9C3 U+00F0
0x8FA9CC U+00F8
0x8FA9CE U+00DF
0x8FA9D0 U+00FE
0x8FAAA1 U+00C1
0x8FAAA2 U+00C0
0x8FAAA3 U+00C4
0x8FAAA4 U+00C2
0x8FAAA9 U+00C5
0x8FAAAA U+00C3
0x8FAAAE U+00C7
0x8FAAB1 U+00C9
0x8FAAB2 U+00C8
0x8FAAB3 U+00CB
0x8FAAB4 U+00CA
0x8FAABF U+00CD
0x8FAAC0 U+00CC
0x8FAAC1 U+00CF
0x8FAAC2 U+00CE
0x8FAAD0 U+00D1
0x8FAAD1 U+00D3
0x8FAAD2 U+00D2
0x8FAAD3 U+00D6
0x8FAAD4 U+00D4
0x8FAAD8 U+00D5
0x8FAAE2 U+00DA
0x8FAAE3 U+00D9
0x8FAAE4 U+00DC
0x8FAAE5 U+00DB
0x8FAAF2 U+00DD
0x8FABA1 U+00E1
0x8FABA2 U+00E0
0x8FABA3 U+00E4
0x8FABA4 U+00E2
0x8FABA9 U+00E5
0x8FABAA U+00E3
0x8FABAE U+00E7
0x8FABB1 U+00E9
0x8FABB2 U+00E8
0x8FABB3 U+00EB
0x8FABB4 U+00EA
0x8FABBF U+00ED
0x8FABC0 U+00EC
0x8FABC1 U+00EF
0x8FABC2 U+00EE
0x8FABD0 U+00F1
0x8FABD1 U+00F3
0x8FABD2 U+00F2
0x8FABD3 U+00F6
0x8FABD4 U+00F4
0x8FABD8 U+00F5
0x8FABE2 U+00FA
0x8FABE3 U+00F9
0x8FABE4 U+00FC
0x8FABE5 U+00FB
0x8FABF2 U+00FD
0x8FABF3 U+00FF
nkf 2.0.6 では、
EUC-JP UNICODE
0xA1F1 : U+00A2
0xA1F2 : U+00A3
0xA1EF : U+00A5
0xA1F8 : U+00A7
0xA1AF : U+00A8
0xA2CC : U+00AC
0xA1EB : U+00B0
0xA1DE : U+00B1
0xA1AD : U+00B4
0xA2F9 : U+00B6
0xA1DF : U+00D7
0xA1E0 : U+00F7
0xFCFC : U+00A6
0xA1B1 : U+00AF
0xA1A4 : U+00B8
となり、3バイト文字(補助漢字)への変換が行われないのと、U+00A6, U+00AF, U+00B8 が追加されています。(eucJP-ascii との非互換)
この範囲の値は、UNICODE -> EUC-JP -> UNICODE 変換で元の値に戻ります。
また、--fb-xxx で削除されるデータを拾うことができるはずでしたが、うまく機能していないようです。おそらくバグでしょう。
この範囲の値は、UNICODE -> EUC-JP -> UNICODE 変換で元の値に戻ります。
また、--fb-xxx で削除されるデータを拾うことができるはずでしたが、うまく機能していないようです。おそらくバグでしょう。
nkf 2.0.6 の --fb-* オプション ― 2006年03月28日 08時06分33秒
nkf 2.0.6 で、UNCODE U+0080 ~ U+00FF までの値を -W16e --fb-subchar で変換すると、
U+00A1 U+00A4 U+00A9 U+00AA U+00AE U+00BA U+00BF U+00C0 U+00C1 U+00C2 U+00C3 U+00C4 U+00C5 U+00C6 U+00C7 U+00C8 U+00C9 U+00CA U+00CB U+00CC U+00CD U+00CE U+00CF U+00D1 U+00D2 U+00D3 U+00D4 U+00D5 U+00D6 U+00D8 U+00D9 U+00DA U+00DB U+00DC U+00DD U+00DE U+00DF U+00E0 U+00E1 U+00E2 U+00E3 U+00E4 U+00E5 U+00E6 U+00E7 U+00E8 U+00E9 U+00EA U+00EB U+00EC U+00ED U+00EE U+00EF U+00F0 U+00F1 U+00F2 U+00F3 U+00F4 U+00F5 U+00F6 U+00F8 U+00F9 U+00FA U+00FB U+00FC U+00FD U+00FE U+00FF
が欠落します。これは欠落してはいけないのではありませんでしたか?
--fb-subchar と --fb-skip との違いは以下のようになります。
0a1,33 < U+0080 < U+0081 < U+0082 < U+0083 < U+0084 < U+0085 < U+0086 < U+0087 < U+0088 < U+0089 < U+008A < U+008B < U+008C < U+008D < U+008E < U+008F < U+0090 < U+0091 < U+0092 < U+0093 < U+0094 < U+0095 < U+0096 < U+0097 < U+0098 < U+0099 < U+009A < U+009B < U+009C < U+009D < U+009E < U+009F < U+00A0 4a38,39 < U+00AB < U+00AD 5a41,45 < U+00B2 < U+00B3 < U+00B5 < U+00B7 < U+00B9 6a47,50 < U+00BB < U+00BC < U+00BD < U+00BE 23a68 < U+00D0
nkf 2.0.6 リリース ― 2006年03月28日 08時12分41秒
nkf 2.0.6 の入手先を書き忘れていました。ここから取得できます。
http://prdownloads.sourceforge.jp/nkf/19481/nkf206a.tar.gz
MD5 : f4b07268b238ac85551e2777fa2c3836
SHA1: be81a8e3322b0c2567a1c38be9f0ba06b4431152
nkf206.tar.gz が最初にリリースされましたが、アーカイブ内の各ファイルのパーミッションがすべて 0777 になっていたので、nkf206a.tar.gz が作られました。 本質的には同じものです。
Re: NKF の UNICODE -> EUC-JP 変換における問題 ― 2006年03月28日 08時29分18秒
NKF における UNICODE マッピングの問題
UNICODE -> EUC-JP に変換した時に次のような変換が行われます。
nkf 2.0.6 で次のように修正されました。
nkf 2.0.6 で次のように修正されました。
NKF 2.0.4 NKF 2.0.5 NKF 2.0.6.
I (U+0130) (0x00) 削除 削除
'
y (U+00fd) (0xc0) 削除 削除
-D (U+00d0) (0xc0) 削除 削除
_
E (U+0114) (0x00) 削除 削除
_
e (U+0115) @ (0x40) 削除 削除
'
g (U+0123) (0xc0) 削除 削除
'
O (U+01fe) (0xc0) 削除 削除
^
o (U+01ff) (0xc0) 削除 削除
\ (U+00a5) (0xc0) 削除 (0xA1EF)
(c) (U+00a9) (0x00) (0x00) 削除
(R) (U+00ae) (0x80) 削除 削除
* ここでテストした文字以外で不具合が生じる可能性はあります。
NKF 2.0.4 では誤変換が多く、特に 0x00 に変換されるのものは C 言語で取り扱う際に不都合が生じます。
NKF 2.0.5 ではほぼ理想的に変換できない文字が削除されていますが、(c)だけは例外で 0x00 に変換されてしまいます。
NKF 2.0.6 では、理想的にすべて削除されています。U+00A5 が 0xA1EF に変換されるのも好ましい変換です。
NKF 2.0.5 ではほぼ理想的に変換できない文字が削除されていますが、(c)だけは例外で 0x00 に変換されてしまいます。
NKF 2.0.6 では、理想的にすべて削除されています。U+00A5 が 0xA1EF に変換されるのも好ましい変換です。
この部分に関しては、NKF 2.0.6 で問題が解決したので、NKF 2.0.6 を推奨としたいところですが、--fb-* でバグがあるようですので、推奨は先送りにしようかと思います。
最近のコメント