Network Working Group M. Ohta Request for Comments: 1554 Tokyo Institute of Technology Category: Informational K. Handa ETL December 1993 ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP ISO-2022-JP-2: ISO-2022-JPの多言語拡張 前書き このメモは、Informational RFCであるRFC1554の 日本語訳です。このメモやRFC1554は、いかなる意味でもインターネ ット標準を定めるものではありません。このメモの配布は無制限に許可され ます。 始めに このメモは、ISO-2022-JP-2というテキストエンコーディング 方式について記述しています。このエンコーディング方式は、既存のISO -2022-JP[2022JP]の多言語拡張であり、実際に日本のネッ トワークの一部で、電子メイル[RFC822]や電子ニュース[RFC1 036]のために実験的に利用されています。このエンコーディング方式は、 Emacsの多言語拡張であるMULE[MULE]でサポートされていま す。 ISO-2022-JP-2という名前は、MIME[MIME1、MIM E2]のcharset名としても利用します。 エンコーデイングの実際 ISO-2022-JP-2でエンコードされたテキストは、最初はASC II文字集合[ASCII]で始まり、ISO2022[ISO2022] に基づくいくつかのエスケープシーケンスにより、他の文字集合に切り替わ ります。総ての文字は7ビットのみでエンコードされます。 テキストの最初には、アナウンサーとして、"ESC 2/0 4/1 E SC 2/0 4/6 ESC 2/0 5/10"が省略されているもの とします。つまり、94文字集合は、G0に指示され、GLとして呼び出さ れます。C1制御文字集合は、7ビットで表されます。96文字集合は、G 2に指示され、SS2(シングルシフト2、"ESC 4/14"="ES C N")により呼び出されます。 例えば、"ESC 2/4 2/8 4/3"="ESC $ ( C"と いうエスケープシーケンスは、これに続くバイト列が、2バイト一組で韓国 のKSC標準の文字を表すことを示します。"ESC 2/14 4/1" Ohta & Handa [Page 1] RFC 1554 Multilingual Extension of ISO-2022-JP December 1993 ="ESC . A"というエスケープシーケンスは、ISO 8859- 1がG2に指示されることを示します。以後は、シングルシフトを用いた、 "ESC 4/14 4/1"="ESC N A"という列が、「アキュ ートアクセント付きA」という文字を示すことになります。 以下のテーブルは、ISO-2022-JP-2で用いられる文字集合とエ スケープシーケンスを示します。"reg#"というのは、ISOへの登録 番号[ISOREG]です。 94 character sets reg# character set ESC sequence designated to ------------------------------------------------------------------ 6 ASCII ESC 2/8 4/2 ESC ( B G0 42 JIS X 0208-1978 ESC 2/4 4/0 ESC $ @ G0 87 JIS X 0208-1983 ESC 2/4 4/2 ESC $ B G0 14 JIS X 0201-Roman ESC 2/8 4/10 ESC ( J G0 58 GB2312-1980 ESC 2/4 4/1 ESC $ A G0 149 KSC5601-1987 ESC 2/4 2/8 4/3 ESC $ ( C G0 159 JIS X 0212-1990 ESC 2/4 2/8 4/4 ESC $ ( D G0 96 character sets reg# character set ESC sequence designated to ------------------------------------------------------------------ 100 ISO8859-1 ESC 2/14 4/1 ESC . A G2 126 ISO8859-7(Greek) ESC 2/14 4/6 ESC . F G2 文字集合とエスケープシーケンスに関する更に詳しい情報については、[I SO2022]や[ISOREG]を参照してください。 テキスト中にG0への指示があった場合、 次の行末やタブなどの制御文字や 空白文字がくるまでに("ESC 4/14 2/0"="ESC N ' '"というシングルシフト列は、空白文字のコードは含みますが、空白文 字ではありません)、G0へ、ASCIIもしくは、JIS X 0201 -Romanが指示され直さなければいけません。次の行の先頭では、その 前の行の行末の指示が有効です。ただし、行末等でのJIS X 0201 -Romanへの指示は、ISO-2022-JPへの互換性のために許さ れているだけですので、実際にこのような指示をすることは勧められません。 特に、エディタやページャのようにISO-2022-JP-2でエンコー ドされたファイル中をランダムにシークするアプリケーションでは、行頭で は常にG0にASCIIが指示されていると仮定してかまいません。 各行の頭では、前の行でG2に何が指示されていたかに関する情報は、保持 されないこととします。96文字集合が使われる行ごとに、新たなG2への 指示が必要となります。 テキストの最後は、G0にASCIIが指示された状態で終わります。 ISO-2022-JPやISO-2022-JP-2は、英語や現代日本 Ohta & Handa [Page 2] RFC 1554 Multilingual Extension of ISO-2022-JP December 1993 語の表記のために設計されているため、水平方向の表示に際しては、左から 右という方向性を持つものとします。 ISO-2022-JP-2の利用に際しては、日本での古いBNewsの ように、7/15(10進で127)というコード(ISO 8859-1 では、上に二つの黒点が付いたyという文字)を通さないものもあることに 留意してください。 その他の規制は、以下の「形式的構文」の節に記述されています。 形式的構文 ここでの記法は、STD11、RFC822[RFC822]と同じです。 アスタリスク"*"は、次のような意味に使われます: l*m something は、すくなくとも1個の、そしてせいぜいm個の、somethingとい うパターンが繰り返されることを示します。lやmが省略された場合のデフ ォールト値は、それぞれ0と無限大です。 message = headers 1*(CRLF text) ; see also [MIME1] "body-part" ; note: must end in ASCII text = *(single-byte-char / g2-desig-seq / single-shift-char) [*segment reset-seq *(single-byte-char / g2-desig-seq / single-shift-char ) ] ; note: g2-desig-seq must ; precede single-shift-char headers = segment = single-byte-segment / double-byte-segment single-byte-segment = single-byte-seq *(single-byte-char / g2-desig-seq / single-shift-char ) double-byte-segment = double-byte-seq *((one-of-94 one-of-94) / Ohta & Handa [Page 3] RFC 1554 Multilingual Extension of ISO-2022-JP December 1993 g2-desig-seq / single-shift-char ) reset-seq = ESC "(" ( "B" / "J" ) single-byte-seq = ESC "(" ( "B" / "J" ) double-byte-seq = (ESC "$" ( "@" / "A" / "B" )) / (ESC "$" "(" ( "C" / "D" )) g2-desig-seq = ESC "." ( "A" / "F" ) single-shift-seq = ESC "N" single-shift-char = single-shift-seq one-of-96 CRLF = CR LF ; ( Octal, Decimal.) ESC = ; ( 33, 27.) SI = ; ( 17, 15.) SO = ; ( 16, 14.) CR = ; ( 15, 13.) LF = ; ( 12, 10.) one-of-94 = ; (41-176, 33.-126.) one-of-96 = ; (40-177, 32.-127.) 7BIT = ; ( 0-177, 0.-127.) single-byte-char = MIMEに関する注意 MIMEのcharset名としては、ISO-2022-JP-2という 名前が次のように使われます: Content-Type: text/plain; charset=iso-2022-jp-2 ISO-2022-JP-2は、最初から7ビットですから、Conten t-Transfer-Encodingを利用する必要はありません。B Ohta & Handa [Page 4] RFC 1554 Multilingual Extension of ISO-2022-JP December 1993 ase64やQuoted-Printableを無理に使うと、MIME をサポートしていないソフトウェアでは、メッセージが読めなくなります。 ISO-2022-JP-2は、MIMEヘッダーでも利用可能です。この 場合、BエンコーディングもQエンコーディングも、どちらも有用です。 参考文献 [ASCII] American National Standards Institute, "Coded character set -- 7-bit American national standard code for information interchange", ANSI X3.4-1986. [ISO2022] International Organization for Standardization (ISO), "Information processing -- ISO 7-bit and 8-bit coded character sets -- Code extension techniques", International Standard, Ref. No. ISO 2022-1986 (E). [ISOREG] International Organization for Standardization (ISO), "International Register of Coded Character Sets To Be Used With Escape Sequences". [MIME1] Borenstein, N., and Freed, N., "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, September 1993. [MIME2] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522, September 1993. [RFC822] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, August 1982. [RFC1036] Horton M., and Adams, R., "Standard for Interchange of USENET Messages", RFC 1036, AT&T Bell Laboratories, Center for Seismic Studies, December 1987. [2022JP] Murai, J., Crispin, M., and E. van der Poel, "Japanese Character Encoding for Internet Messages", RFC 1468, June 1993. [MULE] Nishikimi, M., Handa, K., and Tomura, S., "Mule: MULtilingual Enhancement to GNU Emacs", Proc. of INET'93, August, 1993. 謝辞 このメモは、fj.kanjiでの多数の人たちによる議論を反映して、j p-msg@iij.ad.jpというメイリングリストでのレビューを経 Ohta & Handa [Page 5] RFC 1554 Multilingual Extension of ISO-2022-JP December 1993 て完成しました。特に、和田英一先生には、ISO2022とその関連企画 に関する深い知識に基づく助言に感謝いたします。 セキュリティーに関して このメモは、セキュリティーに関しては、何も述べていません。 著者の連絡先 〒152東京都目黒区大岡山2-12-1 東京工業大学総合情報処理センター 太田 昌孝 Masataka Ohta Tokyo Institute of Technology 2-12-1, O-okayama, Meguro-ku, Tokyo 152, JAPAN Phone: +81-3-5499-7084 Fax: +81-3-3729-1940 EMail: mohta@cc.titech.ac.jp 〒305つくば県筑波市梅園1-1-4 電子技術総合研究所 半田 剣一 Ken'ichi Handa Electrotechnical Laboratory Umezono 1-1-4, Tsukuba, Ibaraki 305, JAPAN Phone: +81-298-58-5916 Fax: +81-298-58-5918 EMail: handa@etl.go.jp Ohta & Handa [Page 6]