「JIS X 0208に含まれなくて、JIS X 0212に含まれる」⇒「JIS X 0208とJIS X 0212以外のJIS X xxxには含まれない」、は、必ずしも真ではないのに、
質問者の方の『「濵」の字は、それに含まれず、JIS X 0212に含まれるので、』で、「JIS X 0212にだけ含まれる」と思ってしまったことの反省の上に立って、ちょっとまとめておきます。
文字に関する規格などに相当詳しいであろう方の質問、と思っているから、JIS X 0212以外にも含まれる可能性がある、なんてことが、頭に浮かぶはずもない。
以下のような違いがありました。
- JIS X 0212とJIS X 0213との間に互換性はない。
- JIS X 0212は、JIS X 0208にない文字を集めた文字集合。
- JIS X 0213は、JIS X 0208を包含し、更に第三・第四水準漢字などを加えた上位集合
JIS X 0212の失敗の反省の上にたって、JIS X 0213は「上位集合」にしたのかな?
[参考資料]
情報交換用符号化文字集合
JIS X 0212
http://ja.wikipedia.org/wiki/補助漢字JIS X 0213
http://ja.wikipedia.org/wiki/JIS_X_0213情報交換用符号化文字集合に対応する情報交換用符号化方式の名称
http://www.wdic.org/w/WDIC/ISO-2022-JP(ISO-2022-JP-1, ISO-2022-JP-2, ISO-2022-JP-3, ISO-2022-JP-2004 も見てください)
情報交換用符号化方式の、登録された規格
http://ja.wikipedia.org/wiki/ISO/IEC_2022(ISO-2022-JPも見てください)
IANAに登録された、メールのcharsetに書ける、情報交換用符号化方式の呼称
http://www.iana.org/assignments/character-sets/character-sets.xhtml[/参考資料]
質問に対するお答え。
ちしはら さんが書きました:
"ISO-2022-JP" は、JIS X 0208-1990までで、「濵」の字は、それに含まれず、JIS X 0212に含まれるので、
"ISO-2022-JP-1" とならないといけないのではないか、と考えました。
"ISO-2022-JP-1"としなくても、規格上は問題ない、ということなのでしょうか。
メールのContent-Type:のcharsetやエンコーディングのcharset指定に使えるものは、IANAに登録されたものだけです。
ISO-2022-JP系は、ISO-2022-JPとISO-2022-JP-2のみがIANAに登録されています。
登録されていない場合は、X-ISO-2022-JP-2004のようにして、実験用だと明記し、送信側と受信側の合意の下に使うことになります。
「情報交換用符号化文字集合に対応する情報交換用符号化方式の名称」が定められていたからと言って、メーラーがそれをX-xxx-yyy-zzとして送る義務はありません。
従って「規格上問題がある・問題がない」という話ではありえなくて、Thunderbirdは、規格どおりにきちん動いている、ということになります。
それに、「濵」の字は、JIS X 0212にも含まれていますし、JIS X 0213にも入っていると思います。
もしかすると、MSのCP932に入っていて、MSのISO-2022-JPの独自拡張、として扱われている可能性もあります。
また、前述の通り、charset=ISO-2022-JP-1とすることは、IANAが許可しておりません。
ですから、「"ISO-2022-JP-1"とならないといけないのではないか」とのお考えは、間違っています。
「"ISO-2022-JP-1"としてはいけない」、なのです。
ちしはら さんが書きました:
Sourceとして、RFC2237も示しているのであれば、JIS X 2012の文字「濵」に対して、エスケープシーケンスが、そうなっていない(JIS X 0208-1983のエスケープシーケンスになっている)のは、なぜかな、とは思います。(歴史的経緯や、相互可用性のもんだいがあるので、そうしているのでしょうかね。)
RFC2237がISO-2022-JP-1をポイントしていて、そのRFCをSource=RFC2237としてIANAの表に載っている場合、
送る側全員が厳格にそのRFCに書いてある内容を常に実行せよ、というものではなくて、
RFC2237のcharset=ISO-2022-JP-1部分はIANA拒否したけれど、
それを除いて、RFC2237に従って送ることを許しているから、
受け取り側の人は、RFC2237に従って送られたメールを受け取った時に、拒絶したりしないで正しく受け取ってね、という意味の方が強いと思います。
送る側が、ある情報交換用符号化方式で符号化したデータを送った、と宣言したのなら、その情報交換用符号化方式で正しく符号化したデータを送るのは当然の義務ですし、
送る側に対しては、メールを送る時に使うことができる情報交換用符号化方式のリスト、載っていれば使うことが禁止されているわけではないとわかるリスト、というものになると思います。
実験としてX-xx-yy-zzとして使う為の参照用、というような意味合いもあるかもしれません。
Thunderbirdが以下のことを実行しないのは、
Source=RFC2237⇒ISO-2022-JP-1
⇒JIS X 0212の文字は、JIS X 0212-1990のエスケープシーケンスで送らねばならない
今そんなことをしたら受け取り側で文字化けの嵐になるからしない、ということと、
その文字はJIS X 0212以外にも含まれているから「RFC2237⇒ISO-2022-JP-1」の制限・制約を受けない、ということの、
どちらかあるいは両方なのだと思います。
今回、メールのメッセージュヘッダーには現われてはいけないISO-2022-JP-1という名前について、
文字集合の定義としては優れていたとしても、MSのCP932に入りきらなくて、使われることのなかった、
かわいそうな、JIS X 212という文字集合に付随する情報交換用符号化方式について、
その後のリベンジのJIS X 213について、IANAの名前の表について、などを、調べてみて思ったことを書いておきます。
RFC2237は、
(a)JIS X 0212の文字をメールで送ることの許可、
(b) JIS X 0212の文字はJIS X 0212-1990のエスケープシーケンスで送らねばならない、
(c) JIS X 0212の文字があったらISO-2022-JP-1であると宣言しろ、
(d) JIS X 0212の文字がないのにISO-2022-JP-1であると宣言してはならない、
だけだから、
ISO-2022-JP-1という名前が却下された以上、(c)/(d)は自然消滅。
(b)は、メールのメッセージヘッダーの話とは無関係。
RFC2237があろうがなかろうが、JIS X 0212-1990のエスケープシーケンスはきちんと定義されているわけだし。
メッセージヘッダーの規定なのに、符号化の中身までこのRFCで規定すること自体がいけない。
それに、RFC2237は、JIS X 0212の文字はJIS X 0212-1990のエスケープシーケンスで送らねばならない、というような書き方をしているから、(c)はもう消滅したことだし、(b)にも消えてもらう。
となると、残るは、JIS X 0212の文字をメールで送っても構わない、ということくらい。
IANAのSource=からは除去しておいた方が、誤解を生みにくいと思います。
ISO/IEC 2022の規則と規定であることと、ISO/IEC 2022で定義されたどのエスケープシーケンスであるか、だけで、符号化された文字集合 ⇔ 文字集合 の一意的な相互変換ができるはずだから、
ISO/IEC 2022の中のキャラクターセットにつけられた名前の「ISO-2022-JP」であることを受け取り側に伝えるだけですむはず。
ISO-8859系ではISO-8859-Xの[X]まで伝えないと変換表を特定できない、ということとは、事情が異なります。
そもそも、RFC2237は、RFC822/RFC2822/RFC5322に従ったメッセージヘッダーのcharset指定のためのものであり、
ISO-2022-JP-1という名前が認められなかった以上、存在意義が無いものだから、RFC2237を引っ込めたっていいはず。
JIS X 0212という文字集合、ISO/IEC 2022で規定されているJIS X 0212-1990のエスケープシーケンス、それに付随するISO-2022-JP-1という符号化方式の名前とそれが意味する規則など、は、
RFC2237があろうがなかろうが、厳として存在していて、認知されているわけだし。
RFC2237を見て、RFCの欠点を再認識したようにも思います。
「標準」であって、規格・規則・基準ではなく、マナーみたいなものだから、厳密性などさらさら無いのは当然ですが、
一度できると、その曖昧さの故に、特に、マナー違反があった時にどうすべきか、などについては全然言及していないので、
MSの横紙破りがあった時とか、他のメーラーのバグのせいで、あるいはWebメールアプリのカジュアルプログラマーのRFCなんてほとんど気にかけない、のせいで、文字が化けたり、添付ファイルが表示されないと、
Thundeibirdユーザーが言ってくるのは、「Tunderbirdのバグでメールがまともに見られない。俺がちゃんと見られるようにしろ」、になるんですよね(^^;
今回のRFC2237がらみでも、
もしMSのメーラーがJIS X 0212-1990のエスケープシーケンスで送って来て、Thunderbirdで表示できないと、Thunderbirdのバグ、
もしThunderbirdがJIS X 0212-1990のエスケープシーケンスで送って、MSのメーラーで表示できないと、Thunderbirdのバグ、
と、必ず「Thunderbirdのバグ」になります(^^)
「JIS X 0208に含まれなくて、JIS X 0212に含まれる」⇒「JIS X 0208とJIS X 0212以外のJIS X xxxには含まれない」、は、必ずしも真ではないのに、
質問者の方の『「濵」の字は、それに含まれず、JIS X 0212に含まれるので、』で、「JIS X 0212にだけ含まれる」と思ってしまったことの反省の上に立って、ちょっとまとめておきます。
文字に関する規格などに相当詳しいであろう方の質問、と思っているから、JIS X 0212以外にも含まれる可能性がある、なんてことが、頭に浮かぶはずもない。
以下のような違いがありました。
[list]
[*]JIS X 0212とJIS X 0213との間に互換性はない。
[*]JIS X 0212は、JIS X 0208にない文字を集めた文字集合。
[*]JIS X 0213は、JIS X 0208を包含し、更に第三・第四水準漢字などを加えた上位集合[/list]
JIS X 0212の失敗の反省の上にたって、JIS X 0213は「上位集合」にしたのかな?
[参考資料]
情報交換用符号化文字集合
JIS X 0212 [url=http://ja.wikipedia.org/wiki/%E8%A3%9C%E5%8A%A9%E6%BC%A2%E5%AD%97]http://ja.wikipedia.org/wiki/補助漢字[/url]
JIS X 0213 [url=http://ja.wikipedia.org/wiki/JIS_X_0213]http://ja.wikipedia.org/wiki/JIS_X_0213[/url]
情報交換用符号化文字集合に対応する情報交換用符号化方式の名称
[url=http://www.wdic.org/w/WDIC/ISO-2022-JP]http://www.wdic.org/w/WDIC/ISO-2022-JP[/url]
(ISO-2022-JP-1, ISO-2022-JP-2, ISO-2022-JP-3, ISO-2022-JP-2004 も見てください)
情報交換用符号化方式の、登録された規格
[url=http://ja.wikipedia.org/wiki/ISO/IEC_2022]http://ja.wikipedia.org/wiki/ISO/IEC_2022[/url]
(ISO-2022-JPも見てください)
IANAに登録された、メールのcharsetに書ける、情報交換用符号化方式の呼称
[url=http://www.iana.org/assignments/character-sets/character-sets.xhtml]http://www.iana.org/assignments/character-sets/character-sets.xhtml[/url]
[/参考資料]
質問に対するお答え。
[quote="ちしはら"]
"ISO-2022-JP" は、JIS X 0208-1990までで、「濵」の字は、それに含まれず、JIS X 0212に含まれるので、
"ISO-2022-JP-1" とならないといけないのではないか、と考えました。
"ISO-2022-JP-1"としなくても、規格上は問題ない、ということなのでしょうか。
[/quote]
メールのContent-Type:のcharsetやエンコーディングのcharset指定に使えるものは、IANAに登録されたものだけです。
ISO-2022-JP系は、ISO-2022-JPとISO-2022-JP-2のみがIANAに登録されています。
登録されていない場合は、X-ISO-2022-JP-2004のようにして、実験用だと明記し、送信側と受信側の合意の下に使うことになります。
「情報交換用符号化文字集合に対応する情報交換用符号化方式の名称」が定められていたからと言って、メーラーがそれをX-xxx-yyy-zzとして送る義務はありません。
従って「規格上問題がある・問題がない」という話ではありえなくて、Thunderbirdは、規格どおりにきちん動いている、ということになります。
それに、「濵」の字は、JIS X 0212にも含まれていますし、JIS X 0213にも入っていると思います。
もしかすると、MSのCP932に入っていて、MSのISO-2022-JPの独自拡張、として扱われている可能性もあります。
また、前述の通り、charset=ISO-2022-JP-1とすることは、IANAが許可しておりません。
ですから、「"ISO-2022-JP-1"とならないといけないのではないか」とのお考えは、間違っています。
「"ISO-2022-JP-1"としてはいけない」、なのです。
[quote="ちしはら"]
Sourceとして、RFC2237も示しているのであれば、JIS X 2012の文字「濵」に対して、エスケープシーケンスが、そうなっていない(JIS X 0208-1983のエスケープシーケンスになっている)のは、なぜかな、とは思います。(歴史的経緯や、相互可用性のもんだいがあるので、そうしているのでしょうかね。)
[/quote]
RFC2237がISO-2022-JP-1をポイントしていて、そのRFCをSource=RFC2237としてIANAの表に載っている場合、
送る側全員が厳格にそのRFCに書いてある内容を常に実行せよ、というものではなくて、
RFC2237のcharset=ISO-2022-JP-1部分はIANA拒否したけれど、
それを除いて、RFC2237に従って送ることを許しているから、
受け取り側の人は、RFC2237に従って送られたメールを受け取った時に、拒絶したりしないで正しく受け取ってね、という意味の方が強いと思います。
送る側が、ある情報交換用符号化方式で符号化したデータを送った、と宣言したのなら、その情報交換用符号化方式で正しく符号化したデータを送るのは当然の義務ですし、
送る側に対しては、メールを送る時に使うことができる情報交換用符号化方式のリスト、載っていれば使うことが禁止されているわけではないとわかるリスト、というものになると思います。
実験としてX-xx-yy-zzとして使う為の参照用、というような意味合いもあるかもしれません。
Thunderbirdが以下のことを実行しないのは、
Source=RFC2237⇒ISO-2022-JP-1
⇒JIS X 0212の文字は、JIS X 0212-1990のエスケープシーケンスで送らねばならない
今そんなことをしたら受け取り側で文字化けの嵐になるからしない、ということと、
その文字はJIS X 0212以外にも含まれているから「RFC2237⇒ISO-2022-JP-1」の制限・制約を受けない、ということの、
どちらかあるいは両方なのだと思います。
今回、メールのメッセージュヘッダーには現われてはいけないISO-2022-JP-1という名前について、
文字集合の定義としては優れていたとしても、MSのCP932に入りきらなくて、使われることのなかった、
かわいそうな、JIS X 212という文字集合に付随する情報交換用符号化方式について、
その後のリベンジのJIS X 213について、IANAの名前の表について、などを、調べてみて思ったことを書いておきます。
RFC2237は、
(a)JIS X 0212の文字をメールで送ることの許可、
(b) JIS X 0212の文字はJIS X 0212-1990のエスケープシーケンスで送らねばならない、
(c) JIS X 0212の文字があったらISO-2022-JP-1であると宣言しろ、
(d) JIS X 0212の文字がないのにISO-2022-JP-1であると宣言してはならない、
だけだから、
ISO-2022-JP-1という名前が却下された以上、(c)/(d)は自然消滅。
(b)は、メールのメッセージヘッダーの話とは無関係。
RFC2237があろうがなかろうが、JIS X 0212-1990のエスケープシーケンスはきちんと定義されているわけだし。
メッセージヘッダーの規定なのに、符号化の中身までこのRFCで規定すること自体がいけない。
それに、RFC2237は、JIS X 0212の文字はJIS X 0212-1990のエスケープシーケンスで送らねばならない、というような書き方をしているから、(c)はもう消滅したことだし、(b)にも消えてもらう。
となると、残るは、JIS X 0212の文字をメールで送っても構わない、ということくらい。
IANAのSource=からは除去しておいた方が、誤解を生みにくいと思います。
ISO/IEC 2022の規則と規定であることと、ISO/IEC 2022で定義されたどのエスケープシーケンスであるか、だけで、符号化された文字集合 ⇔ 文字集合 の一意的な相互変換ができるはずだから、
ISO/IEC 2022の中のキャラクターセットにつけられた名前の「ISO-2022-JP」であることを受け取り側に伝えるだけですむはず。
ISO-8859系ではISO-8859-Xの[X]まで伝えないと変換表を特定できない、ということとは、事情が異なります。
そもそも、RFC2237は、RFC822/RFC2822/RFC5322に従ったメッセージヘッダーのcharset指定のためのものであり、
ISO-2022-JP-1という名前が認められなかった以上、存在意義が無いものだから、RFC2237を引っ込めたっていいはず。
JIS X 0212という文字集合、ISO/IEC 2022で規定されているJIS X 0212-1990のエスケープシーケンス、それに付随するISO-2022-JP-1という符号化方式の名前とそれが意味する規則など、は、
RFC2237があろうがなかろうが、厳として存在していて、認知されているわけだし。
RFC2237を見て、RFCの欠点を再認識したようにも思います。
「標準」であって、規格・規則・基準ではなく、マナーみたいなものだから、厳密性などさらさら無いのは当然ですが、
一度できると、その曖昧さの故に、特に、マナー違反があった時にどうすべきか、などについては全然言及していないので、
MSの横紙破りがあった時とか、他のメーラーのバグのせいで、あるいはWebメールアプリのカジュアルプログラマーのRFCなんてほとんど気にかけない、のせいで、文字が化けたり、添付ファイルが表示されないと、
Thundeibirdユーザーが言ってくるのは、「Tunderbirdのバグでメールがまともに見られない。俺がちゃんと見られるようにしろ」、になるんですよね(^^;
今回のRFC2237がらみでも、
もしMSのメーラーがJIS X 0212-1990のエスケープシーケンスで送って来て、Thunderbirdで表示できないと、Thunderbirdのバグ、
もしThunderbirdがJIS X 0212-1990のエスケープシーケンスで送って、MSのメーラーで表示できないと、Thunderbirdのバグ、
と、必ず「Thunderbirdのバグ」になります(^^)