文字コード掲示板


記事表示


No.372投稿日時:2006/01/22(日) 05:00    <親記事>
投稿者:成瀬

Unicode => eucJP-ms の対応について

こんにちは、先日のEncode::EUCJPMSではお世話になりました。

さて、今日になってふとIBM ICUの持っている ucm ファイルのデータを探してみたら、
glibc-EUC_JP_MS-2.3.3.ucm なんてファイルを見つけてしまって落ち込んでいるわけですが、
それはいいとして。
http://dev.icu-project.org/cgi-bin/viewcvs.cgi/charset/data/ucm/


本題ですが、eucJP-msのコード変換規則に定められている外、
具体的にはUnicodeからeucJP-msへの対応について教えてください。

1. U+0080 - U+009F
U+0080 - U+009F の範囲、EUC-JPですとC1集合が割り当てられる範囲について。
libiconvではこの範囲は未定義になっているようですが、
このglibc-EUC_JP_MS-2.3.3.ucmでは \x80-\x9F が対応させられています。どちらのほうが望ましいとお考えでしょうか。

2. U+00A5 および U+203E
この2文字はglibc-EUC_JP_MS-2.3.3.ucm では
<U00A5> \x5C |1
<U203E> \x7E |1
となっています。

2.1 セキュリティ上の懸念
しかし、以下において、UnicodeにおいてU+0080以降にある文字が、
ASCIIの範囲に変換されてしまう件について懸念が示されています。
http://namazu.asablo.jp/blog/2005/11/26/156199#c

これ自体は、
「コード変換はそのような危険性を含むため、変換後にフィルタリングを行うこと」
という逃げも可能です。(実際CP932やCP51932ではそうせざるをえない)

2.2 意味上の対応関係
さて、eucJPとUnicodeの対応を表にすると以下のようになります。

eucJP-ms
0x5C <-> U+005C # Reverse Solidus
? <-- U+00A5 # Yen Sign
0xA1EF <-> U+FFE5 # Fullwidth Yen Sign

eucJP-0208
0xA1C0 <-> U+005C
0x5C <-> U+00A5
0xA1EF <-> U+FFE5

eucJP-ascii
0x5C <-> U+005C
0xA1EF <-> U+00A5
? <-- U+FFE5

ここでそれぞれの体系における0x5Cの意味を考えると、
eucJP-0208においては0x5Cは円記号ですので、U+A5との対応が妥当となります。
一方、eucJP-asciiはもとより、eucJP-msにおいても、0x5Cは逆斜線です。
確実に円記号を表しているはずのU+00A5をこの逆斜線に変換してしまうのは疑問です。
同様にU+203E (Overline) も、 ASCIIの場合は \x7E (TILDE) でなく、
\xA1\xB1 (OVERLINE) に変換するのが妥当なように感じます。

以上から、eucJP-msでは
<U00A5> \xA1\xEF |1
<U203E> \xA1\xB1 |1
とするのが妥当ではないかと、わたしは感じたのですが、いかがなものでしょうか。

[ 記事一覧 | 返信(R) | 引用して返信(Q) ]


Script : Sylpheed 1.24
Modified by MORIYAMA Masayuki