標準情報(TR)    TR X 0015:1999


XML日本語プロファイル 解説



1. 日本語XMLプロファイルの必要性

[TR X 0008]は,符号化文字集合として[JIS X 0221]及び[Unicode 2.0]を採用しており,これは日本語文字をすべて含む。文字符号化スキームとしてはUTF-8及びUTF-16を推奨し,これらの実装を義務付けている。既存の文字符号化スキームも, [Unicode 2.0]の文字だけを扱う限りオプションとしてすべて許容している。

しかし,[TR X 0008]では,日本語文字の交換に広く使われてきた既存の文字符号化スキームはほとんど説明されてなく,オプションの一つとして許容されているに過ぎない。SMTP及びHTTPなどのプロトコル並びに情報交換用ファイルで,どの文字符号化スキームを用いるかについても,特に定められてはいない。

既存の文字符号化スキームと[JIS X 0221]及び [Unicode 2.0]との対応も不明確である。相互に異なるいくつかの変換表が用いらており,複数のXMLプロセサが異なる結果を出力する場合がある。

これらの問題点を明確にするため,この標準情報(TR)では文字符号化スキームについての明確化を行った。既存の文字符号化スキームを用いた場合の問題点を解決できたわけではないが,どのような問題点があるかは整理されている。

2. シフトJISからUnicodeへの変換表の相違点

シフトJISから[JIS X 0221]及び[Unicode 2.0]への変換表の相違点は,大きく四つ存在する。

第一に,0x5C及び0x7Eは,x-sjis-unicode-0.9及びx-sjis-jisx0221-1995ではそれぞれ円記号及びオーバラインに変換するが,x-sjis-cp932及びx-sjis-jdk1.1.7ではそれぞれバックスラッシュ及びチルドに変換する。

第二に,0x8160(WAVE DASH/波ダッシュ), 0x8161(DOUBLE VERTICAL LINE/双柱), 0x817C(MINUS SIGN/負符号,減算記号), 0x8191(CENT SIGN/セント記号), 0x8192(POUND SIGN/ポンド記号), 0x081CA(NOT SIGN/否定)は, x-sjis-cp932だけが他と異なる変換を行う。

第三に,0x815C(EM DASH/ダッシュ(全角))は,x-sjis-jisx0221-1995 ではU+2014(EM DASH)に変換するが,他ではU+2015(HORIZONTAL BAR)に変換する。

第四に,x-sjis-cp932だけがNEC特殊文字,NEC選定IBM拡張文字,IBM拡張文字,ユーザ外字を含んでいる。

解説表2.1 シフトJISから[Unicode 2.0]への変換表の相違
シフトJISでのコード値 x-sjis-jdk1.1.7 x-sjis-unicode-0.9 x-sjis-jisx0221-1995 x-sjis-cp932
0x5C(YEN SIGN/円記号) U+005C(REVERSE SOLIDUS) U+00A5(YEN SIGN) U+00A5(YEN SIGN) U+005C(REVERSE SOLIDUS)
0x7E(OVERLINE/オーバライン) U+007E(TILDE) U+203E(OVERLINE) U+203E(OVERLINE) U+007E(TILDE)
0x815C(EM DASH/ダッシュ(全角)) U+2015(HORIZONTAL BAR) U+2015(HORIZONTAL BAR) U+2014(EM DASH) U+2015(HORIZONTAL BAR)
0x815F(REVERSE SOLIDUS/逆斜線) U+005C(REVERSE SOLIDUS) U+005C(REVERSE SOLIDUS) U+005C(REVERSE SOLIDUS) U+FF3C(FULLWIDTH REVERSE 
SOLIDUS)
0x8160(WAVE DASH/波ダッシュ) U+301C(WAVE DASH) U+301C(WAVE DASH) U+301C(WAVE DASH) U+FF5E(FULLWIDTH TILDE)
0x8161(DOUBLEVERTICAL 
LINE/双柱)
U+2016(DOUBLEVERTICAL 
LINE)
U+2016(DOUBLEVERTICAL 
LINE)
U+2016(DOUBLEVERTICAL 
LINE)
U+2225(PARALLEL TO)
0x817C(MINUS SIGN/負符号,減算記号) U+2212(MINUS SIGN) U+2212(MINUS SIGN) U+2212(MINUS SIGN) U+FF0D(FULLWIDTH HYPHEN-MINUS)
0x8191(CENT SIGN/セント記号) U+00A2(CENT SIGN) U+00A2(CENT SIGN) U+00A2(CENT SIGN) U+FFE0(FULLWIDTH CENT 
SIGN)
0x8192(POUND SIGN/ポンド記号) U+00A3(POUND SIGN) U+00A3(POUND SIGN) U+00A3(POUND SIGN) U+FFE1(FULLWIDTH POUND 
SIGN)
0x81CA(NOT SIGN/否定) U+00AC(NOT SIGN) U+00AC(NOT SIGN) U+00AC(NOT SIGN) U+FFE2(FULLWIDTH NOT 
SIGN)
13区,89-92区,115-119区の拡張文字 なし なし なし あり

3. 日本語EUCからUnicodeへの変換表の相違点

x-eucjp-unicode-0.9及びx-eucjp-jisx0221-1995は,[US-ASCII], [JIS X 0201]の片仮名用図形文字, [JIS X 0208], 及び[JIS X 0212]において定義されている文字だけを表現する。オープングループ日本ベンダ協議会が定義した変換表[Unicodeとユーザ定義文字・ベンダ定義文字]は,これに加えて,IBM拡張文字(0x8FF3F3から0x8FF4FEの範囲),NEC特殊文字(0xADA1から0xADFCの範囲),ユーザ定義文字(0xF5A1から0xFEFEの範囲及び0x8FF5A1から0x8FFEFEの範囲に分散して配置される。)を表現する。

3.1 0x20から0x7Eの範囲([US-ASCII]又は[JIS X 0201])

0x20から0x7Eの範囲においては,x-eucjp-unicode-0.9, x-eucjp-jisx0221-1995, x-eucjp-open-19970715-ms, x-eucjp-open-19970715-asciiのいずれも,日本語EUCの定義どおり[US-ASCII]とみなして変換している。x-eucjp-open-19970715-0201だけが例外であり,[JIS X 0201]に従って次の変換を採用している。

解説表3.1 x-eucjp-open-19970715-0201の変換表
EUCでのコード値 変換先
0x5C(REVERSE SOLIDUS/逆斜線) U+00A5(YEN SIGN)
0x7E(TILDE/チルド) U+203E(OVERLINE)

3.2 0x8EA1から0x8EDFまでの範囲(片仮名用図形文字)

0x8EA1から0x8EDFの範囲には,[JIS X 0201]での片仮名用図形文字が配置されるが,すべての変換表で[JIS X 0221]及び[Unicode 2.0]の互換性領域内のU+xFF61から U+xFF9Fの範囲に変換している。相違はない。

3.3 [JIS X 0208], [JIS X 0212]の文字に関する相違

[JIS X 0208], [JIS X 0212]で規定されている文字に関しては, x-eucjp-jisx0221-1995とx-eucjp-open-19970715-0201とはまったく等しい。

x-eucjp-unicode-0.9は,これらと0xA1BD(EM DASH/ダッシュ(全角))とが異なる。

x-eucjp-open-19970715-asciiでは, 0xA1B1(OVERLINE/オーバライン,論理否定記号), 0xA1C0(REVERSE SOLIDUS/逆斜線), 0xA1EF(YEN SIGN/円記号), 0x8FA2B7(TILDE/チルド)の四つの文字が異なる。

x-eucjp-open-19970715-msでは, 0xA1BD(EM DASH/ダッシュ(全角)), 0xA1C0(REVERSE SOLIDUS/逆斜線), 0xA1C1(WAVE DASH/波ダッシュ), 0xA1C2(DOUBLE VERTICAL LINE/双柱), 0xA1D0(MINUS SIGN/負符号,減算記号), 0xA1F1(CENT SIGN/セント記号), 0xA1F2(POUND SIGN/ポンド記号), 0xA2CC(NOT SIGN/否定), 0x8FA2B7(TILDE/チルド), 0x8FA2C3(BROKEN BAR/破断線)の文字が異なる。

3.4 IBM拡張文字,NEC特殊文字,ユーザ定義文字に関する相違

変換表x-eucjp-open-19970715-ms, x-eucjp-open-19970715-0201, x-eucjp-open-19970715-asciiは, IBM拡張文字,NEC特殊文字,ユーザ定義文字(の領域)を含むため,IBM拡張文字,NEC特殊文字,ユーザ定義文字をUnicodeに変換している。これらの変換は一致する。しかし, x-eucjp-unicode-0.9, x-eucjp-jisx0221-1995は,これらの文字に関して言及していない。

解説表3.2 日本語EUCから[Unicode 2.0]への変換表の相違(その1)
日本語EUCでのコード値 x-eucjp-unicode-0.9 x-eucjp-jisx0221-1995 x-eucjp-open-19970715-ms
0x5C(REVERSE SOLIDUS/逆斜線) U+005C(REVERSE SOLIDUS) U+005C(REVERSE SOLIDUS) U+005C(REVERSE SOLIDUS)
0x7E(TILDE/チルド) U+007E(TILDE) U+007E(TILDE) U+007E(TILDE)
0xA1B1(OVERLINE/オーバライン,論理否定記号) U+FFE3(FULLWIDTH MACRON) U+FFE3(FULLWIDTH MACRON) U+FFE3(FULLWIDTH MACRON)
0xA1BD(EM DASH/ダッシュ(全角)) U+2015(HORIZONTAL BAR) U+2014(EM DASH) U+2015(HORIZONTAL BAR)
0xA1C0(REVERSE SOLIDUS/逆斜線) U+005C(REVERSE SOLIDUS) U+005C(REVERSE SOLIDUS) U+FF3C(FULLWIDTH REVERSE SOLIDUS)
0xA1C1(WAVE DASH/波ダッシュ) U+301C(WAVE DASH) U+301C(WAVE DASH) U+FF5E(FULLWIDTH TILDE)
0xA1C2(DOUBLE VERTICAL LINE/双柱) U+2016(DOUBLE VERTICAL LINE) U+2016(DOUBLE VERTICAL LINE) U+2225(PARALLEL TO)
0xA1D0(MINUS SIGN/負符号,減算記号) U+2212(MINUS SIGN) U+2212(MINUS SIGN) U+FF0D(FULLWIDTH HYPHEN-MINUS)
0xA1F1(CENT SIGN/セント記号) U+00A2(CENT SIGN) U+00A2(CENT SIGN) U+FFE0(FULLWIDTH CENT SIGN)
0xA1F2(POUND SIGN/ポンド記号) U+00A3(POUND SIGN) U+00A3(POUND SIGN) U+FFE1(FULLWIDTH POUND SIGN)
0xA1EF(YEN SIGN/円記号) U+FFE5(FULLWIDTH YEN SIGN) U+FFE5(FULLWIDTH YEN SIGN) U+FFE5(FULLWIDTH YEN SIGN)
0xA2CC(NOT SIGN/否定) U+00AC(NOT SIGN) U+00AC(NOT SIGN) U+FFE2(FULLWIDTH NOT SIGN)
0x8FA2B7(TILDE/チルド) U+007E(TILDE) U+007E(TILDE) U+FF5E(FULLWIDTH TILDE)
0x8FA2C3(BROKEN BAR/破断線) U+00A6(BROKEN BAR) U+00A6(BROKEN BAR) U+FFE4(FULLWIDTH BROKEN BAR)

解説表3.3 日本語EUCから[Unicode 2.0]への変換表の相違(その2)
日本語EUCでのコード値 x-eucjp-open-19970715-0201 x-eucjp-open-19970715-ascii
0x5C(REVERSE SOLIDUS/逆斜線) U+00A5(YEN SIGN) U+005C(REVERSE SOLIDUS)
0x7E(TILDE/チルド) U+203E(OVERLINE) U+007E(TILDE)
0xA1B1(OVERLINE/オーバライン,論理否定記号) U+FFE3(FULLWIDTH MACRON) U+203E(OVERLINE)
0xA1BD(EM DASH/ダッシュ(全角)) U+2014(EM DASH) U+2014(EM DASH)
0xA1C0(REVERSE SOLIDUS/逆斜線) U+005C(REVERSE SOLIDUS) U+FF3C(FULLWIDTH REVERSE SOLIDUS)
0xA1C1(WAVE DASH/波ダッシュ) U+301C(WAVE DASH) U+301C(WAVE DASH)
0xA1C2(DOUBLE VERTICAL LINE/双柱) U+2016(DOUBLE VERTICAL LINE) U+2016(DOUBLE VERTICAL LINE)
0xA1D0(MINUS SIGN/負符号,減算記号) U+2212(MINUS SIGN) U+2212(MINUS SIGN)
0xA1F1(CENT SIGN/セント記号) U+00A2(CENT SIGN) U+00A2(CENT SIGN)
0xA1F2(POUND SIGN/ポンド記号) U+00A3(POUND SIGN) U+00A3(POUND SIGN)
0xA1EF(YEN SIGN/円記号) U+FFE5(FULLWIDTH YEN SIGN) U+00A5(YEN SIGN)
0xA2CC(NOT SIGN/否定) U+00AC(NOT SIGN) U+00AC(NOT SIGN)
0x8FA2B7(TILDE/チルド) U+007E(TILDE) U+FF5E(FULLWIDTH TILDE)
0x8FA2C3(BROKEN BAR/破断線) U+00A6(BROKEN BAR) U+00A6(BROKEN BAR)

4. HTTP1.1におけるcharsetパラメタ

日本語HTML文書では, 文字化けがしばしば発生することが知られている。これは, メディアタイプtext/htmlのcharsetパラメタを正しく付けているHTML文書がほとんど存在しないことによる。この問題については, [charsetパラメタの勧め]に詳しい情報がある。

XMLで文字化けを避けるためには,必ず正しくcharsetパラメタを設定しなければならない。設定ができないサーバを使用してはならない。

5. 参考文献

Unicode 2.0
The Unicode Consortium. The Unicode Standard, Version 2.0. Reading, Mass.: Addison-Wesley Developers Press, 1996.
UNIX SYSTEM V 日本語環境共通規約
UNIXインターナショナル.UNIX SYSTEM V リリース4 日本語環境共通規約, トッパン,1992.
Unicodeとユーザ定義文字・ベンダ定義文字
TOG/JVC CDE/Motif 技術検討WG. Unicodeとユーザ定義文字・ベンダ定義文字に関する問題点と解決策,オープングループ日本ベンダ協議会,http://www.opengroup.or.jp/jvc/cde/ucs-conv.html, 1996.
charsetパラメタの勧め
村田, Dürst, Nicol. charsetパラメタの勧め: HTMLにおける文字符号化スキームの明示方法, http://www.fxis.co.jp/DMS/sgml/html_correct_charset.html, 1998

6. 原案作成委員会

この標準情報(TR)の原案を作成した(財)日本規格協会 情報技術標準化研究センター(INSTAC)の高速Webにおける標準化に関する調査研究委員会, 作業グループ(WG3) 及びXML特別作業グループ(XML-SWG)の委員構成を, その順に次に示す。

高速Webにおける標準化に関する調査研究委員会
氏名 所属
(委員長) 池田 克夫 京都大学
(幹事) 鯵坂 恒夫 和歌山大学
(幹事) 小町 祐史 松下電送システム株式会社
(幹事) 平山 亮 ヒューレット・パッカード日本研究所
内山 光一 株式会社東芝
久保田 靖夫 大日本印刷株式会社
黒川 利明 日本アイ・ビー・エム株式会社
斎藤 伸雄 凸版印刷株式会社
澤田 位 財団法人日本規格協会
橋爪 邦隆 通商産業省工業技術院標準部
長谷川 敬太 日本電信電話株式会社
二本松 勝 株式会社日立製作所
氏兼 裕之 通商産業省機械情報産業局
古瀬 幸広 立教大学
松本 充司 早稲田大学
柳町 昭夫 株式会社NHKアイテック
(事務局) 山中 正幸 財団法人日本規格協会


作業グループ(WG3)
氏名 所属
(主査) 小町 祐史 松下電送システム株式会社
(幹事) 内山 光一 株式会社東芝
奥井 康弘 株式会社日本ユニテック
上村 圭介 国際大学グローバルコミュニケーションセンター
北野 敬介 日本サン・マイクロシステムズ株式会社
黒川 利明 日本アイ・ビー・エム株式会社
郡山 龍 株式会社アプリックス
澤田 位 財団法人日本規格協会
山東 滋 株式会社日立製作所
田中 義之 通商産業省機械情報産業局
内藤 広志 大阪工業大学
仁保 信市 株式会社東芝
乃木 篤 株式会社CSK
中島 知行 通商産業省工業技術院標準部
オブザーバ 浅利 千鶴 浅利会計事務所
オブザーバ 稲垣 博人 日本電信電話株式会社
オブザーバ 吉川 徹志 通商産業省機械情報産業局
(事務局) 山中 正幸 財団法人日本規格協会


XML特別作業グループ(XML-SWG)
氏名 所属
(主査) 村田 真 富士ゼロックス情報システム株式会社
内山 光一 株式会社東芝
小町 祐史 松下電送株式会社
檜山 正幸 檜山オフィス
奥井 康弘 株式会社日本ユニテック
高橋 亨 株式会社日立製作所
川俣 晶 株式会社ピーデー
上村 圭介 国際大学グローバルコミュニケーションセンター
今郷 詔 株式会社リコー