* 文字コードにおいて [15] > :エスケープシーケンス (escape sequence): [[符号拡張手順]]において[[制御]]のために[[使用]]する一つ以上の[[ビット組合せ]]。 先頭の[[ビット組合せ]]は、[[制御文字]] [CODE(charname)[[[ESCAPE]]]] ([CODE(jcharname)[[[エスケープ]]]]) を[[表現]]する。 - 参考 この規格では、 [CODE(charname)[[[ESCAPE]]]] は、 常に[[制御文字]]として[[引用]]される。 [SRC[[[JIS X 0202]]:1998 4.13]] [1] > :3.1 エスケープシーケンス (escape sequence): [[符号拡張手順]]において[[制御]]のために使用する一つ以上の[[ビット組合せ]]。 先頭の[[ビット組合せ]]は、 [[制御文字]] [CODE(charname)@en[[[ESCAPE]]]] ([CODE(jcharname)@en[[[エスケープ]]]]) を[[表現]]する。 [SRC[[[JIS X 0201]]:1997 3.1]] [10] '''構文''' [SRC[[[JIS X 0202]]:1998 13.1]]: - [CODE(ABNF)[[DFN[エスケープ・シーケンス]] := [CODE(charname)[[[ESCAPE]]]] *I F]] -- [[バイト列]]。[[8ビット符号]]では8ビット、[[7ビット符号]]では7ビットの列。 - [CODE(ABNF)[[DFN[I]] := %x20-2F [CODE(comment)[;; [[中間バイト]]]]]] - [CODE(ABNF)[[DFN[F]] := %x30-7E [CODE(comment)[;; [[終端バイト]]]]]] [11] [[エスケープ・シーケンス]]を構成する各[[ビット組合せ]]は、 それ単独で出現した時の意味とは無関係で、 [[エスケープ・シーケンス]]全体だけで意味が決まります。 [SRC[[[JIS X 0202]]:1998 13.1]] [12] >>10 に当てはまらない[[バイト]]が[[エスケープ・シーケンス]] (のようなもの) に含まれるかもしれません。 [[応用]]は[[誤り]]を識別して回復する手段を提供する必要があるかもしれませんが、 それは [[ISO/IEC 2022]] の適用範囲外とされています。 [SRC[[[JIS X 0202]]:1998 13.1]] [3] '''エスケープ・シーケンスの種類''': エスケープ・シーケンスは、 [CODE(charname)@en[[[ESC]]]] の直後の[[ビット組合せ]]により次の通り分類されます [SRC[[[JIS X 0202]]:1998 13.2.1, 13.2.2]]。 ,種類,[CODE(charname)@en[[[ESC]]]] の次のビット組合せ,機能 ,[CODE@en[[[0F]]]],[CODE(char)[02/00]],[[告知]] ([CODE(charname)@en[[[ANNOUNCE CODE STRUCTURE]]]]) ,[CODE@en[[[1F]]]],[CODE(char)[02/01]],[[C0]] [[指示]] ([CODE(charname)@en[[[C0-DESIGNATE]]]]) ,[CODE@en[[[2F]]]],[CODE(char)[02/02]],[[C1]] [[指示]] ([CODE(charname)@en[[[C1-DESIGNATE]]]]) ,[CODE@en[[[3F]]]],[CODE(char)[02/03]],[[単独制御機能]] ,[CODE@en[[[4F]]]],[CODE(char)[02/04]],[[複数バイト図形文字集合]][[指示]] ,[CODE@en[[[5F]]]],[CODE(char)[02/05]],[CODE(charname)@en[[[DESIGNATE OTHER CODING SYSTEM]]]] ,[CODE@en[[[6F]]]],[CODE(char)[02/06]],[CODE(charname)@en[[[IDENTIFY REVISED REGISTRATION]]]] ,[CODE@en[[[7F]]]],[CODE(char)[02/07]],(予約) ,[CODE@en[[[8F]]]],[CODE(char)[02/08]],[[G0]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]]) ,[CODE@en[[[9F]]]],[CODE(char)[02/09]],[[G1]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]]) ,[CODE@en[[[10F]]]],[CODE(char)[02/10]],[[G2]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]]) ,[CODE@en[[[11F]]]],[CODE(char)[02/11]],[[G3]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]]) ,[CODE@en[[[12F]]]],[CODE(char)[02/12]],[[G0]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]]) ,[CODE@en[[[13F]]]],[CODE(char)[02/13]],[[G1]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]]) ,[CODE@en[[[14F]]]],[CODE(char)[02/14]],[[G2]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]]) ,[CODE@en[[[15F]]]],[CODE(char)[02/15]],[[G3]] [[指示]] ([CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]]) ,[CODE@en[[[Fp]]]],[CODE(char)[03/00]]〜[CODE(char)[03/15]],[[私用制御機能]] ,[CODE@en[[[Fe]]]],[CODE(char)[04/00]]〜[CODE(char)[05/15]],[[C1]] [[制御機能]] ,[CODE@en[[[Fs]]]],[CODE(char)[06/00]]〜[CODE(char)[07/14]],[[標準単独制御機能]] ([CODE@en[[[12F]]]] は [[ISO/IEC 2022]] では予約) [[#comment]] **誤り処理 [8] 00/00〜01/15, 07/15〜15/15 が謝って含まれた場合 [[応用]]は誤り状態の識別手段及び誤り状態からの回復手段を 提供する必要があるかもしれませんが、その様な要件は ISO/IEC 2022 の範囲外とするとされています。 ([[JISX0202]]:1998 13.1 備考参照。) [1] >>8 エスケープ・シーケンスに出現し得ないバイトが出てきた場合だけでなく、未知のエスケープ・シーケンスが出てきた場合の回復はどうですかね? これも実装依存ですかね? [[#comment]] ** F = 07/00 [9] によると[[終端バイト]]の[[ビット組合せ]] 07/00 は予約されている。ただ、どの[[中間バイト]]においてなのか不明。 (GnD4 では既に割り当てられているし。) [CODE[Picture Coding Delimiter (PCD) specified in ISO 9281-1]] との混乱を防ぐためらしい。 ということは標準[[単独制御機能]] ([[Fs]]) のことか? [2] >>9 どうやら予約されているのは [CODE(char)[ESC 07/00]] のことらしいです。 [CODE(WikiPage)[[[PCD]]]] 参照。 [[#comment]] ** メモ [[#comment]] * その他「エスケープ・シーケンス」と呼ばれるもの - [11] 【[[HTML]]/[[XML]]】(俗) [[名前文字参照]]や[[数値文字参照]]のこと。 - [13] 【[[プログラム言語]]など】 [CODE(char)[[[\]]]] から始まる文字の列。たとえば [SAMP[[[\n]]]] とか。 -[14] 【[[URI]]】(俗) [[URI符号化]]のこと。