2005-11-27版 nkf のチェック2005年11月28日 07時07分13秒

2005-11-27版 nkf の -e オプションは eucJP-ascii ベースとなっています。

そこで http://www.opengroup.or.jp/jvc/cde/appendix.html のマッピングとの比較を行いました。

とりあえず U+0080 から U+00FF までの範囲を確認したところ、eucJP-ascii では次の変換が行われるようです。


EUC-JP UNICODE
0xA1F1  0x00A2
0xA1F2  0x00A3
0xA1EF  0x00A5 
0xA1F8  0x00A7
0xA1AF  0x00A8
0xA2CC  0x00AC
0xA1EB  0x00B0
0xA1DE  0x00B1
0xA1AD  0x00B4
0xA2F9  0x00B6
0xA1DF  0x00D7
0xA1E0  0x00F7

0x8FA2B1 0x00B8
0x8FA2B4 0x00AF
0x8FA2C2 0x00A1
0x8FA2C3 0x00A6
0x8FA2C4 0x00BF
0x8FA2EB 0x00BA
0x8FA2EC 0x00AA
0x8FA2ED 0x00A9
0x8FA2EE 0x00AE
0x8FA2F0 0x00A4
0x8FA9A1 0x00C6
0x8FA9AC 0x00D8
0x8FA9B0 0x00DE
0x8FA9C1 0x00E6
0x8FA9C3 0x00F0
0x8FA9CC 0x00F8
0x8FA9CE 0x00DF
0x8FA9D0 0x00FE
0x8FAAA1 0x00C1
0x8FAAA2 0x00C0
0x8FAAA3 0x00C4
0x8FAAA4 0x00C2
0x8FAAA9 0x00C5
0x8FAAAA 0x00C3
0x8FAAAE 0x00C7
0x8FAAB1 0x00C9
0x8FAAB2 0x00C8
0x8FAAB3 0x00CB
0x8FAAB4 0x00CA
0x8FAABF 0x00CD
0x8FAAC0 0x00CC
0x8FAAC1 0x00CF
0x8FAAC2 0x00CE
0x8FAAD0 0x00D1
0x8FAAD1 0x00D3
0x8FAAD2 0x00D2
0x8FAAD3 0x00D6
0x8FAAD4 0x00D4
0x8FAAD8 0x00D5
0x8FAAE2 0x00DA
0x8FAAE3 0x00D9
0x8FAAE4 0x00DC
0x8FAAE5 0x00DB
0x8FAAF2 0x00DD
0x8FABA1 0x00E1
0x8FABA2 0x00E0
0x8FABA3 0x00E4
0x8FABA4 0x00E2
0x8FABA9 0x00E5
0x8FABAA 0x00E3
0x8FABAE 0x00E7
0x8FABB1 0x00E9
0x8FABB2 0x00E8
0x8FABB3 0x00EB
0x8FABB4 0x00EA
0x8FABBF 0x00ED
0x8FABC0 0x00EC
0x8FABC1 0x00EF
0x8FABC2 0x00EE
0x8FABD0 0x00F1
0x8FABD1 0x00F3
0x8FABD2 0x00F2
0x8FABD3 0x00F6
0x8FABD4 0x00F4
0x8FABD8 0x00F5
0x8FABE2 0x00FA
0x8FABE3 0x00F9
0x8FABE4 0x00FC
0x8FABE5 0x00FB
0x8FABF2 0x00FD
0x8FABF3 0x00FF

2005-11-27版 nkf では、

EUC-JP UNICODE
0xA1F1  0x00A2
0xA1F2  0x00A3
0xA1F8  0x00A7
0xA1AF  0x00A8
0xA2CC  0x00AC
0xA1EB  0x00B0
0xA1DE  0x00B1
0xA1AD  0x00B4
0xA2F9  0x00B6
0xA1DF  0x00D7
0xA1E0  0x00F7

0xFCFC 0x00A6 0xA1B1 0x00AF -> 0x203E 0xA1A4 0x00B8 -> 0xFF0C

となり、3バイト文字(補助漢字)への変換が行われないのと、U+00A5 が変換されないのと、U+00A6, U+00AF, U+00B8 が追加されています。(eucJP-ascii との非互換)
このうち、U+00AF, U+00B8 は UNICODE -> EUC-JP -> UNICODE 変換で元の値には戻りません。
また、--fb-xxx で削除されるデータを拾うことができますが、

0x00A4
0x00BF


の2つは拾うことができませんでした。これはおそらくバグでしょう。

コメント

_ 成瀬 ― 2005年12月07日 12時11分48秒

こんにちは。
fallback関連は実際にnkfを動かさないと検証できませんけれど、
マッピングについてはucmファイルを使ってテストしているので、
そのucmファイルを見ていただいたほうが、
マッピングの正しさを見るのは楽かと思います。
http://nkf.sourceforge.jp/ucm/
opengroupではeucJPからUnicodeへのマッピングしか定義していないので、
UnicodeからeucJPへは見落としがちなところもありますから。。

ちなみにucmファイルについては以下に多少情報があります。
http://suika.fam.cx/~wakaba/-temp/wiki/wiki?perl%2F%2FEncode%2F%2Fenc2xs

ところで、U+00A5 (YEN SIGN)まわりをチェックしていて、
マッピングに対しての変更を検討しています。
こちらのほうがU+0080以降の文字が変換によってASCIIの範囲に飛び込んでこないので、
より望ましいと思うのですがいかがでしょう。
# eucJP-asciiについては見落としなので明らかなバグですが、

eucJP-ascii
< <U00A5> \x5C |1 # YEN SIGN
---
> <U00A5> \xA1\xEF |0 # YEN SIGN

eucJP-ms
< <U00A5> \x5C |1 # YEN SIGN
---
> <U00A5> \xA1\xEF |1 # YEN SIGN
< <U203E> \x7E |1 # OVERLINE
---
> <U203E> \xA1\xB1 |1 # OVERLINE

eucJP-nkf
> <U00A5> \xA1\xEF |0 # YEN SIGN

_ opengl2772 ― 2005年12月07日 20時54分07秒

最新版の --fb-xxx で
0x00A4
0x00BF
の2つを拾うことができるのを確認しました。

_ opengl2772 ― 2005年12月07日 21時04分15秒

曖昧ですが、テスト中、http://nkf.sourceforge.jp/ucm/ のucmファイルと実際のnkfの結果に違いがあったように記憶しています。最新情報が先のucmファイルに反映されていないのかとその時は思っていました。深くは追求していません。

U+00A5 (YEN SIGN)まわりは、変更案の方が個人的には好ましいと思います。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2005/11/28/157719/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。

_ ナマズのブログ - 2006年03月28日 08時06分37秒


nkf 2.0.6 がリリースされました。そのため早速チェックしてみました。



nkf 2.0.6 の -e オプションは eucJP-ascii ベースとなっています。




そこで
http://www.opengroup.or.jp/jvc/cde/appendix