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文字を定義している。当時、これほど多くのコードが定義されていたのは、マルチバイト制御を実現するには端末にステートマシンを実装する必要があり、当時の電子回路や機械式端末では非常に困難だったためである。
使用が維持されているコードはごくわずかで、BEL、ESC、およびフォーマットエフェクタ [ 1 ] (FE n )文字BS、HT、LF、VT、FF、CRのみです。その他は使用されていないか、NULがC文字列の終端文字であるなど、異なる意味を持つようになりました。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 🔔 BELL に割り当てられています。当時、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 で U+1F514 に BELL を使用するように変更しました。 [ 12 ] ↑ MS-DOS および派生システムでは、これを TAB と呼びます。QBASIC のヘルプにある表によると、意味は同じです - (水平) タブ。 ↑ MS-DOS および派生システムでは、これを NP (次のページ) と呼びます。QBASIC のヘルプの表によると、意味は同じで、次のページの先頭に移動します。 1 2 ISO/IEC 2022 (ECMA-35) では、これらを 8 ビット環境では LS0 および LS1、7 ビット環境では SI および SO と呼んでいます。 [ 13 ] ↑ ASCIIの最初の1963年版では、 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 制御コード として知られるようになりました。7 ビット環境でこれらの新しい制御を使用できるようにするため、シーケンスは同等とみなされることになりました。[ 19 ] 後のISO 8859 規格では 7 ビット コードのサポートは廃止されましたが、この範囲の制御文字は維持されました。ESC @ESC _
ISO 2022で使用するために登録された最初のC1管理コードセットは、1979年に登録された書誌用途向けの特殊なセットであるDIN 31626 [ 22 ]でした 。 [ 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 ] 1 2 3 ISO/IEC 6429 (ECMA-48) の一部ではない[ 9 ] [ 27 ] [ 29 ] : 4 [ 30 ] : 5 [ 31 ] : 8 1 2 3 4 ISO/IEC 6429の初版には含まれていない。 [ 24 ] [ 29 ] : 4 ↑ 1988年に廃止され、1992年にISO/IEC 6429 [ 31 ] : 87 から削除されました( ECMA-48についてはそれぞれ1986 [ 33 ] と1991 [ 34 ] )。
その他の制御コードセット ISO /IEC 2022 (ECMA-35) 拡張メカニズムにより、エスケープシーケンスで C0 および C1 セットを変更できるようになりました。上記の標準 C0 制御文字セットはシーケンスで選択され、上記の C1 セットはシーケンスで選択されます。[ 24 ] ESC ! @ESC " C
公式および非公式の代替案がいくつか定義されていますが、これはほぼ時代遅れです。ほとんどの代替案は、相互運用性のためにASCII制御との互換性をかなり維持せざるを得ませんでした。標準では、ESC、[ 41 ] [ 42 ] SPおよびDEL [ a ] を「固定」コード化文字とし、標準に準拠するすべてのエンコーディングでASCIIの位置に使用できます。[ 44 ] また、C0セットに伝送制御(TC n )コードが含まれている場合、それらはASCIIの位置にエンコードする必要があり[ 41 ] 、C1セットに入れることはできません[ 45 ]。 新しい伝送制御はすべてC1セットに入れる必要があります。[ 41 ]
Unicode Unicodeは、上記で説明した65個のコードポイントをC0およびC1制御コードとの互換性のために予約しており、これらに一般カテゴリ Cc(制御)を与えています。これらは以下のとおりです。
Unicode では、C0 フォーマット コントロール HT、LF、VT、FF、CR (BS は含まれていません)、C0 情報区切り文字 FS、GS、RS、US (および SP)、C1 コントロール NEL のセマンティクスのみが規定されています。[ 59 ] 残りのコードは Unicode に対して透過的であり、その意味は上位レベルのプロトコルに委ねられており、ISO/IEC 6429がデフォルトとして推奨されています。[ 59 ]
Unicodeには、明示的な双方向フォーマットのためのマーク、埋め込み、分離、ポップなどの フォーマット効果文字のほか、合字の使用を制御するためのゼロ幅結合子 と非結合子 Cfなど、多くの追加フォーマット効果文字が含まれています。ただし、これらは ではなく、一般的なカテゴリ (フォーマット) に分類されますCc。
↑ ISO/IEC 4873 はこの要件を C1 SS2 および SS3 に拡張していますが、 [ 43 ] ISO/IEC 2022 自体は拡張していません。
参考文献 ↑ 標準 ECMA-6 7 ビット符号化文字セット (PDF) (技術報告書)。1965 年。p. 4。 ↑ Fox, Brian . 「Info に新しいノードを追加する」 . Info: オンラインのメニュー駆動型 GNU ドキュメント システム . GNU プロジェクト . ↑ "組み込み型 § str.splitlines" . Python 標準ライブラリ . Python ソフトウェア財団 . 1 2 ISO/TC 97/SC 2 (1975). ISO 646 の制御文字セット (PDF) . ITSCJ/ IPSJ . ISO-IR -1. 1 2 3 IPTC (1995)。 IPTC 推奨メッセージ フォーマット (PDF) (第 5 版)。 IPTCテック7901。 1 2 3 「送信終了文字 (EOT)」 。 連邦規格 1037C。1996 年。2016年 3 月 9 日に オリジナル からアーカイブされました。 1 2 Robert McConnell; James Haynes; Richard Warren (2002 年 12 月)。 「ASCII コードの理解 」 。NADCOMM 。 ↑ ウィリアムソン、カール。 「Re: PRI #202: Unicode 6.1.0 用の NameAliases.txt の拡張」 。 1 2 3 Ken Whistler (2011 年 7 月 20 日)。 「制御文字の正式名称エイリアス、L2/11-281」 。Unicode コンソーシアム 。 1 2 3 4 「名前エイリアス」 . Unicode文字データベース . Unicodeコンソーシアム . ↑ 「C0 コントロールと基本ラテン文字」 (PDF) 。Unicode コンソーシアム。 ↑ "charnames" . Perl プログラミングドキュメント . 1 2 3 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。 1 2 3 ECMA/TC 1 (1971). "8.2: 7ビットコードと8ビットコード間の対応". 7ビット符号化文字セットの拡張 (PDF) (第1 版). ECMA . pp. 21–24 . ECMA-35:1971. ↑ ECMA/TC 1 (1973). "4.2: 特定の制御文字". 7ビット入出力符号化文字セット (PDF) (第4 版). ECMA . p. 16. ECMA-6:1973. ↑ ECMA/TC 1 (1985). "5.3.8: 96 文字のセット". コード拡張技術 (PDF) (第 4 版). ECMA . pp. 17–18 . ECMA-35:1985. 1 2 3 ISO/IEC エスケープシーケンスで使用する符号化文字セットの国際登録簿 (PDF) 、ITSCJ/ IPSJ 、ISO-IR、 2023年5月12日に オリジナル (PDF)からアーカイブ、 2023年5月13日に 取得 1 2 DIN (1979-07-15). ドイツ規格 DIN 31626 に基づく書誌用追加管理コード (PDF) . ITSCJ/ IPSJ . ISO-IR -40. 1 2 3 ISO/TC97/SC2 (1983-10-01). ISO 6429:1983 の C1 管理セット (PDF) . ITSCJ/ IPSJ . ISO-IR -77. ↑ ECMA/TC 1 (1979). 「簡単な歴史」。 文字イメージングI/Oデバイスの追加制御機能 (PDF) (第2 版)。ECMA。ECMA - 48:1979。 ↑ 「JIS X 02xx 記号」 (日本語)。 1 2 Ken Whistler (2015-10-05). "なぜ何も消えないのか" . Unicode メーリングリスト . ↑ ECMA/TC 1 (1991 年 6 月)。 符号化文字セットの制御関数 (PDF) (第 5 版)。ECMA。ECMA - 48:1991。 1 2 ISO 6429:1983 情報処理 — ISO 7ビットおよび8ビット符号化文字セット — 文字イメージング装置の追加制御機能 。ISO。1983-05-01 。 ↑ ISO 6429:1988 情報処理 ― 7ビットおよび8ビット符号化文字セットの制御機能 。ISO 。 1988年11月15日。 1 2 ISO/IEC 6429:1992 情報技術 — 符号化文字セット の 制御 機能 。ISO。1992-12-15。2024-05-29 取得 。 ↑ ルンデ、ケン(2008)。CJKV 情報処理:中国語、日本語、韓国語、ベトナム語のコンピューティング 。 オライリー。p. 244。ISBN 9780596800925 。↑ ECMA/TC 1 (1986 年 12 月)。「付録 E: この版での変更点」。 符号化文字セットの制御機能 (PDF) (第 4 版)。ECMA。ECMA - 48:1986。 ↑ ECMA/TC 1 (1991 年 6 月)。「F.8 制御機能の削除」。 符号化文字セットの制御機能 (PDF) (第 5 版)。ECMA。ECMA - 48:1991。 ↑ "VT100 ウィジェット リソース (§ hpLowerleftBugCompat)" . xterm - X 用ターミナル エミュレータ . ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "デバイス制御関数" . XTerm制御シーケンス . 1 2 ブレンダー、ロナルド F. (1989). "Ada 9x プロジェクト レポート: Ada 9x の文字セットの問題" . カーネギー メロン大学 . ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Operating System Commands" . XTerm Control Sequences . ↑ Frank da Cruz; Christine Gianone (1997). Using C-Kermit . Digital Press. p. 278. ISBN 978-1-55558-164-0 。↑ 「端末グラフィックスプロトコル」 . kitty . 2026年5月12日 取得 。 1 2 3 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。 ↑ ISO/TC97/SC2/WG-7 ; ECMA (1985-08-01)。 ISO 4873 の最小 C1 セット (PDF) 。 ITSCJ/ 情報処理学会 。 ISO-IR -105。 ↑ 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。 1 2 ISO/TC97/SC2/WG6 . 「ISO/TC97/SC2/WG8 および ISO/TC97/SC18/WG8 への連絡声明」 (PDF) . ISO/TC97/SC2/WG6 N317.rev. 2020-10-26 に オリジナル (PDF) からアーカイブされました。 ↑ ISO/TC 97/SC 2 (1982). 日本規格 JIS C 6225-1979 の制御文字 C0 セット (PDF) . ITSCJ/ IPSJ . ISO-IR -74. ↑ Printronix (2012). OKI® プログラマーズ リファレンス マニュアル (PDF) . p. 26. ↑ ISO/TC 46 (1983-06-01). 国際規格 ISO 6630 に基づく書誌用追加管理コード (PDF) . ITSCJ/ IPSJ . ISO-IR -67. ↑ ISO/TC 46 (1986-02-01). 国際規格 ISO 6630 に基づく書誌用追加管理コード (PDF) . ITSCJ/ IPSJ . ISO-IR -124. ↑ Stratus Technologies Ireland, Ltd. 「NLS 文字列の概要」 。National Language Support User's Guide (R212) 。 ↑ Stratus Technologies Ireland, Ltd. 「OpenVOS内部文字コードセット」 。OpenVOS システム管理:システムの管理とカスタマイズ(R281) 。 ↑ Stratus Technologies Ireland, Ltd. 「補助グラフィック文字セット」 。 国別言語サポートユーザーガイド(R212) 。 1 2 Umamaheswaran, VS (1999-11-08). "3.3 ステップ 2: バイト変換" . UTF-EBCDIC . Unicode Consortium . Unicode Technical Report #16. 64 個の制御文字 […]、ASCII DELETE 文字 (U+007F)[…] は、IBM Character Data Representation Architecture (CDRA) で定義されている EBCDIC の規則に従ってマッピングされますが、例外が 1 つあります。EBCDIC のラインフィードとニューラインの制御文字のペアは、CDRA のデフォルトのペアから ISO/IEC 6429 のラインフィード (U+000A) とネクストライン (U+0085) の制御文字に交換されます。 ↑ Steele , Shawn (1996-04-24). cp037_IBMUSCanada から Unicode テーブルへ 。Microsoft / Unicode Consortium 。 1 2 「23.1: 制御コード」 (PDF) 。Unicode 標準 (15.0.0 版)。Unicode コンソーシアム。2022年。914 ~ 916 ページ 。ISBN 978-1-936213-32-0 。
外部リンク Unicode規格 C0 コントロールと基本ラテン語 C1コントロールとラテン-1サプリメント コントロールピクチャー Unicode規格、バージョン6.1.0、第16章:特殊領域と書式文字 ATIS通信用語集 2007 C1 の問題は 9 つあります か、または XHTML 1.0 では C1 文字は有効ですか? W3C国際化に関するよくある質問:HTML、XHTML、XML、および制御コード エスケープシーケンスで使用するコード化文字セットの国際登録簿( 2023年5月12日にWayback Machine に アーカイブ済み)