[JIS X 4159]は,符号化文字集合として[ISO/IEC 10646]及び[Unicode 3.1]を採用しており,これは日本語文字をすべて含む。文字符号化スキームとしてはUTF-8及びUTF-16を推奨し,これらの実装を義務付けている。既存の文字符号化スキームも, [Unicode 3.1]の文字だけを扱う限りオプションとしてすべて許容している。
しかし,[JIS X 4159]では,日本語文字の交換に広く使われてきた既存の文字符号化スキームはほとんど説明されていない。これらはオプションの一つとして許容されているに過ぎない。SMTP及びHTTPなどのプロトコル並びに情報交換用ファイルで,どの文字符号化スキームを用いるかについても,特に定められてはいない。
既存の文字符号化スキームと[ISO/IEC 10646]及び [Unicode 3.1]との対応も不明確である。相互に異なるいくつかの変換表が用いらており,複数のXMLプロセサが異なる結果を出力する場合がある。
これらの問題点を明らかにするため,この標準情報(TR)では文字符号化スキームについての明確化を行った。既存の文字符号化スキームを用いた場合の問題点を解決できたわけではないが,どのような問題点があるかは整理されている。
シフトJISから[ISO/IEC 10646]及び[Unicode 3.1]への変換表の相違点は,大きく四つ存在する。
第1に, 0x5C及び0x7Eは,x-sjis-unicode-0.9及びx-sjis-jisx0221-1995ではそれぞれ円記号及びオーバラインに変換するが,x-sjis-cp932及びx-sjis-jdk1.1.7ではそれぞれバックスラッシュ及びチルドに変換する。
第2に,0x8160(WAVE DASH/波ダッシュ), 0x8161(DOUBLE VERTICAL LINE/双柱), 0x817C(MINUS SIGN/負符号,減算記号), 0x8191(CENT SIGN/セント記号), 0x8192(POUND SIGN/ポンド記号), 0x081CA(NOT SIGN/否定) は,x-sjis-cp932だけが他と異なる変換を行う。
第3に,0x815C(EM DASH/ダッシュ(全角))は,x-sjis-jisx0221-1995ではU+2014(EM DASH)に変換するが,他ではU+2015(HORIZONTAL BAR)に変換する。
第4に,x-sjis-cp932だけが NEC特殊文字,NEC選定IBM拡張文字,IBM拡張文字,ユーザ外字を含んでいる。
シフトJISでのコード値 | x-sjis-jdk1.1.7 | x-sjis-unicode-0.9 | x-sjis-jisx0221-1995 | x-sjis-cp932 |
---|---|---|---|---|
0x5C(HEN SIGN/円記号) | 0x005C(REVERSE SOLIDUS) | 0x00A5(YEN SIGN) | 0x00A5(YEN SIGN) | 0x005C(REVERSE SOLIDUS) |
0x7E(OVERLINE/オーバライン) | 0x007E(TILDE) | 0x203E(OVERLINE) | 0x203E(OVERLINE) | 0x007E(TILDE) |
0x815C(EM DASH/ダッシュ(全角)) | 0x2015(HORIZONTAL BAR) | 0x2015(HORIZONTAL BAR) | 0x2014(EM DASH) | 0x2015(HORIZONTAL BAR) |
0x815F(REVERSE SOLIDUS/逆斜線) | 0x005C(REVERSE SOLIDUS) | 0x005C(REVERSE SOLIDUS) | 0x005C(REVERSE SOLIDUS) | 0xFF3C(FULLWIDTH REVERSE SOLIDUS) |
0x8160(WAVE DASH/波ダッシュ) | 0x301C(WAVE DASH) | 0x301C(WAVE DASH) | 0x301C(WAVE DASH) | 0xFF5E(FULLWIDTH TILDE) |
0x8161(DOUBLE VERTICAL LINE/双柱) | 0x2016(DOUBLE VERTICAL LINE) | 0x2016(DOUBLE VERTICAL LINE) | 0x2016(DOUBLE VERTICAL LINE) | 0x2225(PARALLEL TO) |
0x817C(MINUS SIGN/負符号,減算記号) | 0x2212(MINUS SIGN) | 0x2212(MINUS SIGN) | 0x2212(MINUS SIGN) | 0xFF0D(FULLWIDTH HYPHEN-MINUS) |
0x8191(CENT SIGN/セント記号) | 0x00A2(CENT SIGN) | 0x00A2(CENT SIGN) | 0x00A2(CENT SIGN) | 0xFFE0(FULLWIDTH CENT SIGN) |
0x8192(POUND SIGN/ポンド記号) | 0x00A3(POUND SIGN) | 0x00A3(POUND SIGN) | 0x00A3(POUND SIGN) | 0xFFE1(FULLWIDTH POUND SIGN) |
0x81CA(NOT SIGN/否定) | 0x00AC(NOT SIGN) | 0x00AC(NOT SIGN) | 0x00AC(NOT SIGN) | 0xFFE2(FULLWIDTH NOT SIGN) |
13区,89-92区,115-119区の拡張文字 | なし | なし | なし | あり |
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の範囲に分散して配置される。)を表現する。
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]に従って次の変換を採用している。
EUCでのコード値 | 変換先 |
0x5C(REVERSE SOLIDUS/逆斜線) | U+00A5(YEN SIGN) |
0x7E(TILDE/チルド) | U+203E(OVERLINE) |
0x8EA1から0x8EDFの範囲には,[JIS X 0201]での片仮名用図形文字が配置されるが,すべての変換表で[ISO/IEC 10646]及び[Unicode 3.1]の互換性領域内のU+xFF61から U+xFF9Fの範囲に変換している。相違はない。
[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/破断線)の文字が異なる。
変換表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は,これらの文字に関して言及していない。
日本語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) |
日本語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) |
日本語HTML文書では, 文字化けがしばしば発生することが知られている。これは, メディアタイプtext/htmlのcharsetパラメタを正しく付けているHTML文書がほとんど存在しないことによる。この問題については,[charsetパラメタの勧め]に詳しい情報がある。
XMLで文字化けを避けるためには,必ず正しくcharsetパラメタを設定しなければならない。設定ができないサーバを使用してはならない。
この標準情報(TR)の原案を作成した(財)日本規格協会 情報技術標準化研究センター(INSTAC)の次世代コンテンツの標準化調査研究委員会及び作業グループ(WG2)を,その順に次に示す。
氏名 | 所属 | |
---|---|---|
(委員長) | 池田 克夫 | 大阪工業大学 |
(幹事) | 村田 真 | 日本アイ・ビー・エム株式会社 |
(幹事) | 小町 祐史 | 松下電送システム株式会社 |
(幹事) | 平山 亮 | 金沢工業大学 |
内山 光一 | 株式会社東芝 | |
久保田 靖夫 | 大日本印刷株式会社 | |
黒川 利明 | 株式会社CSK | |
斎藤 伸雄 | 凸版印刷株式会社 | |
二本松 勝 | 株式会社日立製作所 | |
木戸 達雄 | 経済産業省産業技術環境局 | |
藤原 洋 | 株式会社インターネット総合研究所 | |
松本 充司 | 早稲田大学 | |
柳町 昭夫 | 株式会社NHKアイテック | |
(事務局) | 山中 正幸 | 財団法人日本規格協会 |
氏名 | 所属 | |
---|---|---|
(主査) | 村田 真 | 日本アイ・ビー・エム株式会社 |
小町 祐史 | 松下電送システム株式会社 | |
(幹事) | 内山 光一 | 株式会社東芝 |
奥井 康弘 | 株式会社日本ユニテック | |
上村 圭介 | 国際大学グローバルコミュニケーションセンター | |
今郷 詔 | 株式会社リコー | |
川俣 晶 | 株式会社ピーデー | |
(事務局) | 山中 正幸 | 財団法人日本規格協会 |