C0および C1 制御コードまたは制御文字セットは、 ASCIIおよび ASCII の派生文字を使用するコンピュータ システムでテキスト内で使用される制御コードを定義します。これらのコードは、カーソルの位置、新しい行を開始する指示、テキストを受信したことを示すメッセージなど、テキストに関する追加情報を表します。
C0 コードの範囲は 00 HEX –1F HEXで、デフォルトの C0 セットはもともとISO 646 ( ASCII ) で定義されました。C1 コードの範囲は 80 HEX –9F HEXで、デフォルトの C1 セットはもともとECMA-48 (後に ISO 6429 と整合)で定義されました。制御文字とグラフィック文字を指定するISO/IEC 2022システムでは、特殊なアプリケーションに他の C0 および C1 セットを使用できますが、ほとんど使用されません。
C0コントロール
ASCII では32 個の制御文字が定義されており、さらに DEL 文字に必要な追加文字として 7F HEXまたは 01111111 BIN (紙テープ上のすべての穴を開けて消去するのに必要) が定義されています。
当時は、マルチバイト制御には端末にステート マシンを実装する必要があり、当時の電子機器や機械端末では非常に困難であったため、この大量のコードが望ましいものでした。
使用されているコードは、BEL、ESC、フォーマットエフェクタ[1](FE n)文字BS、TAB、LF、VT、FF、CRのわずか数種類です。その他のコードは使用されていないか、Cの文字列ターミネータであるNULのように異なる意味を獲得しています。ANPA -1312、Kermit、XMODEMなどの一部のデータ転送プロトコルでは、元の定義に近づけるためにSOH、STX、ETX、EOT、ACK、NAK、SYNを多用しています。また、Unix info形式[2]やPythonのsplitlines文字列メソッド[3]などの一部のファイル形式では、「情報セパレータ」(IS n)を使用しています。
ISO 6429:1992 (または ECMA-48:1991) では、一部のコードの名前が、記述方向に対して中立になるように変更されました。使用されている略語は変更されていません。これは、標準が他の言語に翻訳されるときに略語が変更されないことが既に規定されていたためです。この表では、名前が変更されたコントロールの新しい名前と古い名前の両方が表示されています (古い名前は略語に一致する名前です)。
Unicode は、C0 制御文字を置き換えて画面上に表示できる制御ピクチャを提供します。ただし、キャレット表記の方が頻繁に使用されます。
- ^ テレタイプではキーに「あなたは誰ですか?」の略であるWRUというラベルを付けた[7]
- ^ BELLという名前は、Unicodeによって無関係な絵文字🔔(U+1F514)に割り当てられています。C0とC1制御文字は、当時Unicode標準自体によって正式に命名されていませんでしたが、以前のバージョンのUTS#18(Unicode正規表現標準)に従うソフトウェアでこの制御文字の名前としてBELLが既に使用されていたことと衝突しました。 [8]たとえばPerl。[9] Unicodeは現在、制御文字の正式な別名としてALERTとBEL(BELLではない)を受け入れていますが、[10]コードチャートでは依然としてBELLがISO 6429の別名として記載されており、[11]対応する制御ピクチャコードポイントはSYMBOL FOR BELLと呼ばれています。Perlはその後、バージョン5.18でこの絵文字にBELLを使用するように切り替えました。[12]
- ^ ab ISO/IEC 2022(ECMA-35)では、8ビット環境ではLS0とLS1、7ビット環境ではSIとSOと呼ばれています。[13]
- ^ 1963年版のASCIIでは、DLEは伝送制御ではなくデバイス制御として分類され、DC0(「データリンクエスケープ用に予約されたデバイス制御」)という略語が付けられました。[14]
- ^ ' \e ' エスケープ シーケンスは、ISO C や他の多くの言語仕様には含まれていません。ただし、 GCCを含むいくつかのコンパイラでは認識されます。
C1 コントロール
1973年、ECMA-35とISO 2022 [18]は、8ビットの「拡張ASCII」コードを対応する7ビットコードに変換できる方法を定義しようとしました。また、その逆も可能です。[19] 7ビット環境では、シフトアウト(SO)により、96バイト0x20から0x7F [a] [ 21](つまり、C0制御コードを除くすべて)の意味が、8ビット環境で上位ビットが設定された同じコードを使用した場合に出力される文字に変更されます。つまり、0x80から0x9Fの範囲は7ビット環境では出力できません。[19]そのため、代替文字セットではこれらを使用できないと判断され、これらのコードは追加の制御コードとなり、C1制御コードとして知られるようになりました。[19]その後のISO 8859規格では7ビットコードのサポートは廃止されましたが、この範囲の制御文字は保持されました。
ESC @ESC _
ISO 2022で使用するために登録された最初のC1制御コードセットはDIN 31626 [22]であり、これは1979年に登録された書誌使用のための特殊なセットである。[23]
より一般的な汎用ISO/IEC 6429セットは1983年に登録されましたが[24]、そのベースとなったECMA-48仕様は1976年に初めて発行され[25]、JIS X 0211(旧JIS C 6323)[26]ました。RFC 1345 とISO 10646の初期ドラフトで定義されているがISO/IEC 6429にはないシンボル名( PAD、HOP、SGC)も使用されています。[9] [27]
EUC-JPテキストのSS2とSS3、およびEBCDICからトランスコードされたテキストのNELを除き、これらのコードの 8 ビット形式はほとんど使用されませんでした。CSI、DCS、およびOSC は、テキスト端末と端末エミュレーターを制御するために使用されますが、ほとんどの場合、7 ビットのエスケープ コード表現を使用します。今日では、これらのコードに遭遇した場合、 Windows-1252またはMac OS Romanのその位置から文字を印刷することを意図している可能性がはるかに高くなります。
NELを除いて、Unicode はこれらのいずれに対しても「制御画像」を提供していません。また、これらに対するよく知られたキャレット表記のバリエーションもありません。
- ^初期のバージョンでは、 SPとDELは範囲外でした[20]
- ^ abc ISO/IEC 6429 (ECMA-48)の一部ではない[9] [27] [29] : 4 [30] : 5 [31] : 8
- ^ abcd ISO/IEC 6429第1版には含まれていない。[24] [29] : 4
- ^ 1988年に非推奨となり、1992年にISO/IEC 6429 [31] : 87 から撤回された(ECMA-48ではそれぞれ1986年[33]と1991年[34] )。
その他の制御コードセット
ISO /IEC 2022(ECMA-35)拡張メカニズムでは、エスケープシーケンスを使用してC0セットとC1セットを変更できるようになっています。上記の標準C0制御文字セットはシーケンスで選択されESC ! @、上記のC1セットはシーケンスで選択されますESC " C。[24]
公式および非公式の代替手段がいくつか定義されていますが、これらはほとんど時代遅れです。相互運用性のために、そのほとんどは ASCII 制御との互換性をかなり維持することを余儀なくされました。この標準では、ESC、[40] [41] SP および DEL [a]を「固定」コード化文字とし、標準に準拠するすべてのエンコードで ASCII 位置で使用できます。[43]また、C0 セットに伝送制御 (TC n ) コードが含まれている場合、それらは ASCII 位置でコード化する必要があり[40]、C1 セットに配置することはできないこと、[44]、新しい伝送制御は C1 セットに配置する必要があることも規定されています。[40]
その他のC0制御コードセット
- ニュース配信に使用されるテキスト マークアップ言語であるANPA-1312 は、いくつかの C0 制御文字を置き換えます。
- 上記の新しい国際バージョンであるIPTC 7901 には、独自のバリエーションがあります。
- Videotex にはまったく異なるセットがあります。
- Teletextも Videotex に似たセットを定義します。
- T.61 / T.51 [45]およびその他[46]では、EMとGSをSS2とSS3に置き換え、これらの機能を7ビット環境で使用できるようにしました。
- いくつかのセットではFSをSS2に置き換えた[47](ANPA-1312と同じ)。
- 現在は廃止されているJIS C 6225は、後の資料ではJIS X 0207と指定されています。 [ 48] FSをCEXまたは「制御拡張」[49]に置き換えました。これは、縦書きテキストの動作、上付き文字と下付き文字[50]、およびカスタム文字グラフィックスの送信のための制御シーケンスを導入します。[48]
代替C1文字セット
- 特殊なC1制御コードセットは、 MARC-8などの書誌的使用(文字列照合を含む)のために登録されています。[23] [51] [52]
- ビデオテックスフォーマットで使用するために、様々な特殊なC1制御コードセットが登録されています。[22]
- EBCDIC は、 ASCII にあるものに加えて、最大 29 個の追加の制御コードを定義します。EBCDIC をUnicode (またはISO 8859 ) に変換する場合、これらのコードは IBM の Character Data Representation Architecture (CDRA) で指定された方法で C1 制御文字にマッピングされます。[53] [54]改行 (NL) は ISO/IEC 6429 NELに変換されますが(UNIX の行末規則に従って LF と入れ替えられることがよくありますが)、[53]残りの制御コードは対応していません。たとえば、EBCDIC 制御SPSと ECMA-48 制御PLU はどちらも上付き文字の開始または下付き文字の終了に使用されますが、互いにマッピングされていません。したがって、拡張 ASCII にマッピングされた EBCDIC は、ISO/IEC 2022 のISO-IRレジストリに登録されていませんが、独自の C1 セットを持っていると見なすことができます。 [22]
ユニコード
Unicode は、C0 および C1 制御コードとの互換性のために上記の 65 個のコード ポイントを予約し、これらに一般カテゴリ Cc(制御) を割り当てています。これらは次のとおりです。
- U+0000~U+001F(C0制御)とU+007F(DEL)はC0制御と基本ラテンブロックに割り当てられ、
- U+0080~U+009F (C1 コントロール) は、C1 コントロールおよび Latin-1 補足ブロックに割り当てられます。
Unicodeは、C0フォーマット制御のHT、LF、VT、FF、CR(BSがないことに留意)、C0情報区切りのFS、GS、RS、US(およびSP)、およびC1制御のNELのみの意味を規定している。[55]残りのコードはUnicodeに対して透過的であり、その意味はより高レベルのプロトコルに委ねられており、デフォルトとしてISO/IEC 6429が提案されている。 [55]
Unicode には、これら以外にも、明示的な双方向書式設定のためのマーク、埋め込み、分離、ポップ、合字の使用を制御するゼロ幅結合子と非結合子Cfなど、多くの追加の書式効果文字が含まれています。ただし、これらには ではなく、一般カテゴリ (書式) が割り当てられていますCc。
参照
- 制御画像- C0 制御コードの Unicode グラフィカル表現文字
- ANSIエスケープコード
脚注
- ^ ISO/IEC 4873ではこの要件をC1 SS2およびSS3に拡張しているが[42]、 ISO/IEC 2022自体は拡張していない。
参考文献
- ^ 標準 ECMA-6 7 ビット符号化文字セット(PDF) . 1965. p. 4.
- ^ Fox, Brian . 「Info に新しいノードを追加する」。Info : オンラインのメニュー駆動型 GNU ドキュメント システム。GNUプロジェクト。
- ^ 「組み込み型 § str.splitlines」。Python標準ライブラリ。Pythonソフトウェア財団。
- ^ ab ISO/TC 97/SC 2 (1975). ISO 646 の制御文字セット(PDF) . ITSCJ/ IPSJ . ISO-IR -1.
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ abc IPTC (1995)。 IPTC 推奨メッセージ フォーマット(PDF) (第 5 版)。 IPTCテック7901。
- ^ abc 「送信終了文字 (EOT)」。連邦規格 1037C。1996年。2016 年 3 月 9 日時点のオリジナルよりアーカイブ。
- ^ ab Robert McConnell、James Haynes、Richard Warren (2002 年 12 月)。「ASCII コードを理解する」NADCOMM。
- ^ Williamson, Karl. 「Re: PRI #202: Unicode 6.1.0 の NameAliases.txt の拡張」。
- ^ abc Ken Whistler (2011年7月20日). 「制御文字の正式な名前の別名、L2/11-281」. Unicodeコンソーシアム。
- ^ abcd 「名前の別名」。Unicode文字データベース。Unicodeコンソーシアム。
- ^ 「C0 コントロールと基本ラテン文字」(PDF)。Unicode コンソーシアム。
- ^ "charnames". Perl プログラミング ドキュメント。
- ^ abc ECMA (1994). 「7.3: 文字セットコード要素の呼び出し」. 文字コード構造および拡張テクニック(PDF) (ECMA 標準) (第 6 版). p. 14. ECMA-35.
- ^ アメリカ規格協会(1963)。情報交換用アメリカ標準コード: 4。凡例。p. 6。ASA X3.4-1963。
- ^ 「データリンクエスケープ文字 (DLE)」。連邦規格 1037C。1996年。2016 年 8 月 1 日時点のオリジナルよりアーカイブ。
- ^ 「補足伝送制御機能(データ通信システムの基本モード制御手順の拡張)」。欧州コンピュータ製造業者協会。1972 年。ECMA-37。
- ^ 「Ctrl-S のポイントは何ですか?」Unix および Linux Stack Exchange 。 2019 年2 月 14 日閲覧。
- ^ ECMA/TC 1 (1973)。「簡単な歴史」。7 ビット入出力コード化文字セット(PDF) (第 4 版)。ECMA。ECMA - 6:1973。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ abc ECMA/TC 1 (1971). 「8.2: 7 ビット コードと 8 ビット コードの対応」。7 ビット コード文字セットの拡張(PDF) (第 1 版) 。ECMA。pp . 21– 24。ECMA-35:1971。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ECMA/TC 1 (1973)。「4.2: 特定の制御文字」。7 ビット入出力コード化文字セット(PDF) (第 4 版)。ECMA。p . 16。ECMA-6:1973。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ECMA/TC 1 (1985)。「5.3.8: 96 グラフィック文字のセット」。コード拡張テクニック(PDF) (第 4 版) 。ECMA。pp . 17– 18。ECMA-35:1985。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ abc ISO/IEC エスケープシーケンスで使用されるコード化文字セットの国際登録(PDF)、ITSCJ/ IPSJ、ISO-IR
- ^ ab DIN (1979-07-15). ドイツ規格 DIN 31626 に準拠した書誌使用のための追加制御コード(PDF) . ITSCJ/ IPSJ . ISO-IR -40.
- ^ abc ISO/TC97/SC2 (1983-10-01). ISO 6429:1983 の C1 制御セット(PDF) . ITSCJ/ IPSJ . ISO-IR -77.
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ECMA/TC 1 (1979)。「簡単な歴史」。文字イメージング I/O デバイスの追加制御機能(PDF) (第 2 版)。ECMA。ECMA - 48:1979。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ 「JIS X 02xx 記号」。
- ^ ab Ken Whistler (2015-10-05). 「なぜ何も消え去らないのか」. Unicode メーリング リスト.
- ^ ECMA/TC 1 (1991 年 6 月). コード化文字セットの制御関数(PDF) (第 5 版). ECMA . ECMA-48:1991.
{{cite book}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ab ISO 6429:1983 情報処理 - ISO 7ビットおよび8ビットコード化文字セット - 文字イメージングデバイス用の追加制御機能。ISO。1983-05-01。
- ^ ISO 6429:1988 情報処理 — 7 ビットおよび 8 ビットのコード化文字セットの制御機能。ISO。1988-11-15。
- ^ ab ISO/IEC 6429:1992 情報技術 — コード化文字セットの制御機能。ISO。1992-12-15。2024-05-29に取得。
- ^ Lunde, Ken (2008). CJKV 情報処理: 中国語、日本語、韓国語、ベトナム語のコンピューティング。O'Reilly。p. 244。ISBN 9780596800925。
- ^ ECMA/TC 1 (1986 年 12 月)。「付録 E: この版での変更点」。コード化文字セットの制御関数(PDF) (第 4 版) 。ECMA。ECMA -48:1986。
{{cite book}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ECMA/TC 1 (1991 年 6 月)。「F.8 削除された制御機能」。コード化文字セットの制御機能(PDF) (第 5 版)。ECMA。ECMA - 48:1991。
{{cite book}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ 「VT100 ウィジェット リソース (§ hpLowerleftBugCompat)」。xterm - X 用の端末エミュレーター。
- ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. 「デバイス制御関数」。XTerm制御シーケンス。
- ^ ab Brender, Ronald F. (1989). 「Ada 9x プロジェクト レポート: Ada 9x の文字セットの問題」.カーネギーメロン大学.
- ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. 「オペレーティングシステムコマンド」。XTerm制御シーケンス。
- ^ Frank da Cruz、Christine Gianone (1997)。C-Kermit の使用。Digital Press。p. 278。ISBN 978-1-55558-164-0。
- ^ abc ECMA (1994). 「6.4.2: コード化された制御機能の主なセット」. 文字コード構造と拡張テクニック(PDF) (ECMA 標準) (第 6 版). p. 11. ECMA-35.
- ^ ISO/TC97/SC2/WG-7 ; ECMA (1985-08-01)。 ISO 4873 に設定された最小 C0 (PDF)。 ITSCJ/情報処理学会。ISO-IR -104。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ISO/TC97/SC2/WG-7 ; ECMA (1985-08-01)。 ISO 4873 の最小 C1 セット(PDF)。 ITSCJ/情報処理学会。ISO-IR -105。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ECMA (1994)。「6.2: 固定コード化文字」。文字コード構造および拡張テクニック(PDF) (ECMA 標準) (第 6 版)。p. 7。ECMA-35。
- ^ ECMA (1994)。「6.4.3: コード化制御機能の補足セット」。文字コード構造および拡張テクニック(PDF) (ECMA 標準) (第 6 版)。p. 11。ECMA-35。
- ^ ITU (1985). Teletex 制御機能の基本セット(PDF) . ITSCJ/ IPSJ . ISO-IR -106.
- ^ Úřad pronormalizaci a měřeni (1987)。 ISO 646 の制御文字のセット。EM は SS2 に置き換えられます(PDF)。 ITSCJ/情報処理学会。ISO-IR -140。
- ^ ISO/TC 97/SC 2 (1977). ISO 646の制御文字セット(IS4をG2のシングルシフト(SS2)に置き換えたもの)(PDF)。ITSCJ / IPSJ。ISO -IR -36。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ab ISO/TC97/SC2/WG6 . 「ISO/TC97/SC2/WG8およびISO/TC97/SC18/WG8への連絡声明」(PDF) . ISO/TC97/SC2/WG6 N317.rev。2020年10月26日時点のオリジナル(PDF)からアーカイブ。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ISO/TC 97/SC 2 (1982). 日本規格 JIS C 6225-1979 の制御文字の C0 セット(PDF) . ITSCJ/ IPSJ . ISO-IR -74.
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Printronix (2012). OKI® プログラマーズリファレンスマニュアル(PDF) . p. 26.
- ^ ISO/TC 46 (1983-06-01). 国際標準 ISO 6630 に準拠した書誌使用のための追加制御コード(PDF) . ITSCJ/ IPSJ . ISO-IR -67.
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ISO/TC 46 (1986-02-01). 国際標準 ISO 6630 に準拠した書誌使用のための追加制御コード(PDF) . ITSCJ/ IPSJ . ISO-IR -124.
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ ab Umamaheswaran, VS (1999-11-08). 「3.3 ステップ 2: バイト変換」。UTF-EBCDIC。Unicode コンソーシアム。 Unicode 技術レポート #16。
64 個の制御文字 […]、ASCII DELETE 文字 (U+007F)[…] は、IBM 文字データ表現アーキテクチャ (CDRA) で定義されている EBCDIC 規則に従ってマッピングされますが、例外が 1 つあります。EBCDIC の改行文字と改行文字のペアは、CDRA のデフォルトのペアから ISO/IEC 6429 の改行文字 (U+000A) と次の行 (U+0085) の制御文字に置き換えられます。
- ^ Steele, Shawn (1996-04-24). cp037_IBMUSCanada から Unicode テーブルへ。Microsoft / Unicode Consortium。
- ^ ab "23.1: 制御コード" (PDF)。Unicode標準(15.0.0 版)。Unicodeコンソーシアム。2022 年 。914 ~ 916ページ。ISBN 978-1-936213-32-0。
- ユニコード標準
- C0 コントロールと基本ラテン語
- C1 コントロールとラテン 1 サプリメント
- コントロール画像
- Unicode 標準、バージョン 6.1.0、第 16 章: 特殊領域と書式文字
- ATIS テレコム用語集 2007
- C1 問題は 7 つありますか、または XHTML 1.0 では C1 文字は有効ですか?
- W3C I18N FAQ: HTML、XHTML、XML、制御コード
- エスケープシーケンスで使用されるコード化文字セットの国際登録
