Network Working Group
Request for Comments: 1468
村井 純 (慶應義塾大学)
M. Crispin (Panda Programming)
E. van der Poel
1993年6月
これは、 RFC 1468, "Japanese Character Encoding for Internet Messages" を独自に翻訳した物です。 この翻訳を利用する際は、 翻訳者の理解不足による誤訳の可能性が十分にあることを念頭に入れて下さい。 (誤訳を発見された場合、翻訳者まで連絡を頂ければ幸いです。)
この翻訳は "現状有姿 (AS IS)" で提供され、 明示的であるか黙示的であるかを問わずいかなる保証も行われないものとします。
この文書はインターネットコミュニティへ情報を提供するものであり、 インターネットの標準を規定するものではない。 この文書の配布に制限はない。 (訳註: この日本語訳に関しても同様の扱いとする。)
この文書では、 日本のネットワークにおける電子メール [RFC822] とネットワークニューズ [RFC1036] のエンコード法について解説する。 これは当初JUNETにおいて規定・使用されていたものである。 [JUNET] 現在、このエンコード法は日本のIPコミュニティにおいて広く使用されている。
このエンコード法に付された名称は "ISO-2022-JP" であり、 MIMEヘッダの "charset" パラメタフィールドにおいて使用されることを意図している。 ([MIME1]、 [MIME2]を参照。)
テキストはASCII [ASCII] から開始し、
エスケープシーケンスによって日本語文字に遷移する。
たとえば、ESC $ B
(3バイト。16進値: 1B 24 42) というエスケープシーケンス
はこの後に出てくるバイト列が(それぞれ2バイトでエンコードされている)
日本語文字であることを示す。
ASCIIに戻すためには ESC ( B
というエスケープシーケンスが使用される。
以下はエスケープシーケンスと ISO-2022-JP で使用される文字セットの対応表である。 ISOREG 番号はISOの登録番号である。[ISOREG]
エスケープシーケンス | 文字セット | ISOREG番号 |
---|---|---|
ESC ( B | ASCII | 6 |
ESC ( J | JIS X 0201-1976 ("ローマ"字セット) | 14 |
ESC $ @ | JIS X 0208-1978 | 42 |
ESC $ B | JIS X 0208-1983 | 87 |
JIS X 0208は1987年3月1日の名称改定以前はJIS C 6226 と呼ばれていたことに留意すること。 同様に、JIS C 6220はJIS X 0201に変更されている。
JIS X 0201 [JISX0201] の"ローマ"文字セットは 逆スラッシュ(\) と チルダ (~) を除き、ASCII と同一のものである。 逆スラッシュは円記号(¥)で、 チルダはオーバーライン( ̄)で置き換えられている。 このセットはISO 646 [ISO646] の日本用に変更したものである。
JIS X 0208 [JISX0208] 文字セットは漢字、平仮名、片仮名、そして他の記号や文字から成る。 それぞれの文字の大きさは2バイトである。
JIS日本語文字セットに関する詳細は [JISX0201] と [JISX0208] を、 エスケープシーケンスに関しては [ISO2022] と [ISOREG] を参照せよ。
ある行に JIX X 0208 文字が存在する場合、 行末(すなわち、CRLF)の前に ASCII または JIX X 0201 セットの "ローマ字"セットに切替えなければならない。 これは次の行はその直前の行末の前に切り替わった文字セットから 開始することを意味する。
追加して、テキストはASCIIで終了しなければならない。
他の制限に関しては以下に述べる"正式の文法"で示されている。
ここで使用される表記法は RFC 822 [RFC822] で使用されているものと同一のものである。
*
(アスタリスク) は以下の通りである:
l
*
m 何か
これはl個以上m個未満の何かをあらわす。 ここで、lとmはそれぞれ0と無限大の既定値を取る。
message = headers 1*( CRLF *single-byte-char *segment single-byte-seq *single-byte-char ) ; [MIME1] の "body-part" を参照。 ; 注意: ASCIIで終了する必要がある。 headers = <[RFC822] の "fields"、[MIME1] の "body-part" を参照せよ> segment = single-byte-segment / double-byte-segment single-byte-segment = single-byte-seq 1*single-byte-char double-byte-segment = double-byte-seq 1*( one-of-94 one-of-94 ) single-byte-seq = ESC "(" ( "B" / "J" ) double-byte-seq = ESC "$" ( "@" / "B" ) CRLF = CR LF ; ( 8進, 10進) ESC = <ISO 2022 ESC, escape> ; ( 33, 27.) SI = <ISO 2022 SI, shift-in> ; ( 17, 15.) SO = <ISO 2022 SO, shift-out> ; ( 16, 14.) CR = <ASCII CR, carriage return>; ( 15, 13.) LF = <ASCII LF, linefeed> ; ( 12, 10.) one-of-94 = <any one of 94 values> ; (41-176, 33.-126.) 7BIT = <任意の7ビット値> ; ( 0-177, 0.-127.) single-byte-char = <素の CR、素の LF を含み、CRLF を含まない、 ESC、SI、SO を含まない、任意の 7BIT>
JUNET文字エンコード法に付された名称は "ISO-2022-JP" である。 この名称は MIME メッセージにおいて以下のように使用されることを想定している:
Content-Type: text/plain; charset=iso-2022-jp
ISO-2022-JP でエンコードされたメッセージは、
既に7ビット形式になっている。
したがって、Content-Transfer-Encoding
ヘッダを使用する必要は無い。
Base64またはQuoted-Printableエンコード法を適用した場合、
そのメッセージが現在のJUNETソフトウェアでは読めなくなることに
注意するべきである。
ISO-2022-JP はまた、MIME 第2部のヘッダにおいても使用することが出来る。 "B"エンコード法はISO-2022-JPテキストとともに使用されるべきである。
JUNETエンコード法は JUNET User's Guide (JUNET利用の手引 第1版) [JUNET] で解説されている。
このエンコード法は4月1日までに発表された ISO 2022 (詳細は [ISO2022] を参照せよ) の使用方法に基づいている。 しかしながら、この発表に対して一般に使用されているエスケープシーケンスは ISO-2022-JPメッセージには含まれない。
JIS X 0201 の カナセット (訳註: いわゆる "半角カナ" 文字セット) は ISO-2022-JP メッセージには使用されない。
過去、ESC ( H
エスケープシーケンスがJUNETメッセージ中で使用されていた。
このエスケープシーケンスはスエーデン語文字セットとして公式に登録されている。
[ISOREG]
したがって、それは ISO-2022-JP メッセージ中で使用するべきではない。
表示する際、
ESC ( B
と ESC ( J
、
または ESC $ @
と ESC $ B
を区別しないシステムも存在する。
しかしながら、他のシステムへメッセージを中継する場合には、
どのような場合においてもエスケープシーケンスを変更してはならない。
利用者 (実装者ではない) は1行を80文字、 可能ならば75文字程度以内におさめるよう努めるべきである。 これは引用のため、各行頭に " >" を挿入できるようにするためである。 JIS X 0208 文字はそれぞれ2文字の幅を持ち (訳註: これは常に真ではない。 なぜならば、文字コードに文字幅は規定されていないからである。 この記述には、当時は ASCII文字:JIS X 0208 文字 = 1:2 の文字幅を持つ環境が最も一般的であった背景があると思われる。)、 エスケープシーケンスは幅を持たない。 JIS X 0208文字は2バイトを使用するため、 実装者は表示の際には改行で分断されないように注意するべきである。
JIS X 0208 規格は1990年に改定され、 文字コード表の最後に2文字が追加された。 ISO 2022では改訂後の文字セット使用を指示する追加のエスケープシーケンス が規定されている。 しかし、1990年に JIS X 0208 に追加された2文字を使用する場合でも、 ISO-2022-JP テキストにおいてはこの特別なエスケープシーケンスを 使用しないように提案する。
PCコードのような日本語文字エンコード法や、実装が入手可能なFTPサイト に関する詳細な情報は"Electronic Handling of Japanese Text" [JPN.INF] を参照せよ。
この文書を書くにあたって、多くの方々の協力を頂いた。 著者らは特に Akira Kato, Masahiro Sekiguchi そして Ken'ichi Handa に感謝したい。
この文書において、セキュリティ問題に関する議論は行われていない。