Kody kontrolne C0 i C1

Kody kontrolne C0 i C1 lub zestawy znaków kontrolnych definiują kody kontrolne do użytku w tekście przez systemy komputerowe używające ASCII i pochodnych ASCII. Kody reprezentują dodatkowe informacje o tekście, takie jak położenie kursora, polecenie rozpoczęcia nowego wiersza lub wiadomość, że tekst został odebrany.

Kody C0 to zakres 00 HEX –1F HEX , a domyślny zestaw C0 został pierwotnie zdefiniowany w ISO 646 ( ASCII ). Kody C1 to zakres 80 HEX –9F HEX , a domyślny zestaw C1 został pierwotnie zdefiniowany w ECMA-48 (zharmonizowany później z ISO 6429). System określania znaków sterujących i graficznych ISO/IEC 2022 pozwala na udostępnienie innych zestawów C0 i C1 do zastosowań specjalistycznych, ale są one rzadko używane.

kontrole C0

ASCII definiuje 32 znaki kontrolne plus niezbędny dodatkowy znak dla znaku DEL, 7F HEX lub 01111111 BIN (potrzebny do wybicia wszystkich otworów na taśmie papierowej i wymazania jej).

Tak duża liczba kodów była wówczas pożądana, ponieważ sterowanie wielobajtowe wymagałoby implementacji maszyny stanów w terminalu, co było bardzo trudne przy ówczesnej elektronice i terminalach mechanicznych. Od tego czasu tylko kilka oryginalnych kontrolek zachowało swoje użycie: zakres „białych znaków” BS, TAB, LF, VT, FF i CR; kod BEL; i ESC (ale prawie zawsze jako część ESC,'[' reprezentacja CSI rozpoczynająca sekwencję specjalną ANSI ). Inne są nieużywane lub nabrały innych znaczeń, na przykład NUL jest terminatorem łańcucha C.

Niektóre protokoły transmisji szeregowej, takie jak ANPA-1312 , Kermit i XMODEM , szeroko wykorzystują znaki kontrolne SOH, STX, ETX, EOT, ACK, NAK i SYN do celów zbliżonych do ich oryginalnych definicji.

Podstawowe kody kontrolne ASCII

Są to standardowe kody kontrolne ASCII , pierwotnie zdefiniowane w ANSI X3.4 . W przypadku korzystania z ISO/IEC 2022 są one oznaczane jako aktywny zestaw znaków sterujących C0 z sekwencją oktetów 0x1B 0x21 0x40 ( ESC! @ ).

Dziesiętny
Szesnastkowy
Skrót
Symbol
Nazwa Opis
^ @ 00 00 NUL Zero \0 Pierwotnie używany, aby umożliwić pozostawienie przerw na taśmie papierowej do edycji. Później używany do uzupełniania po kodzie, którego przetworzenie może zająć terminalowi trochę czasu (np. powrót karetki lub wysunięcie wiersza na terminalu drukującym). Obecnie często używany jako terminator łańcucha, zwłaszcza w języku programowania C.
^ A 01 01 SOH Początek nagłówka W transmisji wiadomości ogranicza początek nagłówka wiadomości. Format tego nagłówka może być zdefiniowany przez odpowiedni protokół, taki jak IPTC 7901 do dziennikarskiej transmisji tekstu, i zwykle jest on zakończony przez STX. W Hadoop jest często używany jako separator pól.
^ B 02 02 STX Początek tekstu Pierwszy znak tekstu wiadomości i może być używany do zakończenia nagłówka wiadomości.
^ C 03 03 ETX Koniec tekstu W transmisji wiadomości ogranicza koniec głównego tekstu wiadomości. Po nim może następować „informacja po tekście” (tj. strukturalna stopka) zdefiniowana przez odpowiedni protokół lub dowolny dodatkowy tekst, po którym następuje EOT. W przypadku wprowadzania z klawiatury, często używany jako znak „przerwania” (Ctrl-C) w celu przerwania lub zakończenia programu lub procesu.
^ D 04 04 OT Koniec transmisji Ogranicza koniec przesyłanej wiadomości, która może zawierać nagłówek, tekst wiadomości i stopkę po tekście, a nawet wiele tekstów i powiązanych nagłówków. Może być również używany do przełączania terminali w stan gotowości. Często używane w systemie Unix do wskazania końca pliku na terminalu, interpretowane przez powłokę jako polecenie wyjścia lub wylogowania .
^ E 05 05 ENQ Zapytanie Sygnał przeznaczony do wywołania odpowiedzi na końcu odbierającym, aby sprawdzić, czy nadal jest obecny.
^ F 06 06 POK Uznawać Odpowiedź na ENQ lub wskazanie pomyślnego odebrania komunikatu.
^ G 07 07 BEL Dzwonek , uwaga \A Pierwotnie używany do dźwięku dzwonka na terminalu. Później używany jako sygnał dźwiękowy w systemach, które nie miały fizycznego dzwonka. Może również szybko włączać i wyłączać odwrócone wideo (wizualny dzwonek).
^ H 08 08 BS Backspace \B Przesuń kursor o jedną pozycję w lewo. Podczas wprowadzania może to spowodować usunięcie znaku po lewej stronie kursora. Na wyjściu, gdzie we wczesnej technologii komputerowej raz wydrukowanego znaku nie można było usunąć, czasami używano spacji do generowania znaków akcentowanych w ASCII. Na przykład à można utworzyć, używając sekwencji trzech znaków a BS ` (lub, używając wartości szesnastkowych znaków, 0x61 0x08 0x60 ). To użycie nie jest obecnie ogólnie obsługiwane (jest zabronione na przykład w ISO/IEC 8859 ). Aby zapewnić ujednoznacznienie między dwoma potencjalnymi zastosowaniami cofnięcia, znaku anulowania został włączony do standardowego zestawu kontrolnego C1.
^ Ja 09 09 HT Tabulacja postaci, Tabulacja pozioma \T Pozycja do następnego znaku tabulacji .
^ J 10 0A LF Przesunięcie linii \N Na maszynach do pisania , drukarkach i niektórych emulatorach terminali przesuwa kursor o jeden wiersz w dół bez wpływu na pozycję w kolumnie. W systemie Unix używany do oznaczania końca linii . W systemach DOS , Windows i różnych standardach sieciowych LF jest używany po CR jako część znaku końca linii.
^ K 11 0B VT Tabulacja liniowa, Tabulacja pionowa \v Umieść formularz na następnym tabulatorze wiersza.
^ L 12 0C FF Kanał formularza \F W przypadku drukarek załaduj następną stronę. Traktowane jako spacje w wielu językach programowania i mogą być używane do rozdzielania logicznych podziałów w kodzie. W niektórych emulatorach terminali czyści ekran. Nadal pojawia się w niektórych typowych zwykłych plikach tekstowych jako końca strony , takich jak dokumenty RFC publikowane przez IETF .
^ M 13 0D CR Powrót karetki \R Pierwotnie używany do przesuwania kursora do kolumny zero, pozostając w tej samej linii. W klasycznym systemie Mac OS (przed Mac OS X ), a także we wcześniejszych systemach, takich jak Apple II i Commodore 64 , używany do oznaczania końca linii . W DOS , Windows i różnych standardach sieciowych jest używany przed LF jako część znaku końca linii. Klawisz Enter lub Return na klawiaturze wyśle ​​ten znak, ale może on zostać przekonwertowany na inną sekwencję końca linii przez program terminala.
^ N 14 0E WIĘC Wycofaj się Przełącz na alternatywny zestaw znaków.
^ O 15 0F SI Wejdź Powróć do zwykłego zestawu znaków po Shift Out.
^ P 16 10 DLE Ucieczka z łącza danych Powoduje, że ograniczona liczba następujących po sobie oktetów jest interpretowana w inny sposób, na przykład jako surowe dane (w przeciwieństwie do kodów sterujących lub znaków graficznych). Szczegóły tego zależą od implementacji.

Standardy, takie jak (obecnie wycofany) ECMA-37 istniały dla określonych zastosowań typu Data Link Escape w celu uzyskania dostępu do dodatkowych funkcji sterowania transmisją.

Standardowy schemat kompresji dla Unicode sugeruje zastąpienie wszystkich bajtów z zakresu C0 przez DLE, po którym następuje ten bajt plus 0x40, jeśli dane SCSU muszą być przesyłane przez system, który byłby zdezorientowany przez zmianę przeznaczenia bajtów C0 przez SCSU.

^ P 17 11 DC1 Jedno sterowanie urządzeniem ( XON ) Te cztery kody sterujące są zarezerwowane do sterowania urządzeniem, a ich interpretacja zależy od urządzenia, do którego zostały podłączone. DC1 i DC2 miały przede wszystkim wskazywać aktywację urządzenia, podczas gdy DC3 i DC4 miały głównie wskazywać na wstrzymanie lub wyłączenie urządzenia. DC1 i DC3 (znane również odpowiednio jako XON i XOFF w tym użyciu) powstały jako funkcje „uruchamiania i zatrzymywania zdalnego czytnika taśmy papierowej” w sieciach ASCII Telex . To użycie teleprintera stało się de facto standardem kontroli przepływu oprogramowania .
^ R 18 12 ST2 Kontrola urządzeń 2
^ S 19 13 DC3 Kontrola urządzenia trzy ( XOFF )
^ T 20 14 DC4 Kontrola urządzeń Cztery
^ U 21 15 NAK Negatywne potwierdzenie Wysyłane przez stację jako negatywna odpowiedź do stacji, z którą nawiązano połączenie. W binarnym protokole komunikacji synchronicznej NAK jest używany do wskazania, że ​​wykryto błąd w poprzednio odebranym bloku i że odbiornik jest gotowy do zaakceptowania retransmisji tego bloku. W systemach wielopunktowych NAK jest używany jako niegotowa odpowiedź na ankietę.
^ V 22 16 SYN Synchroniczny bieg jałowy Używany w synchronicznych systemach transmisji do dostarczania sygnału, na podstawie którego można uzyskać synchroniczną korekcję między urządzeniami końcowymi danych, zwłaszcza gdy nie jest przesyłany żaden inny znak.
^ W 23 17 ETB Koniec bloku transmisji Wskazuje koniec bloku transmisji danych, gdy dane są dzielone na takie bloki w celu transmisji.

Jeśli nie jest używany do innych celów, IPTC 7901 zaleca interpretację ETB jako znaku końca akapitu.

^ X 24 18 MÓC Anulować Wskazuje, że poprzedzające go dane są błędne lub należy je zignorować.
^ Y 25 19 EM Koniec medium Przeznaczony do wskazywania na papierze lub taśmach magnetycznych, że osiągnięto koniec użytecznej części taśmy. Może również oznaczać koniec używanej części nośnika i niekoniecznie odpowiada fizycznemu końcowi nośnika.

Jeśli nie jest używany do innych celów, IPTC 7901 zaleca zmianę przeznaczenia EM na spację em do wcięcia pierwszego wiersza akapitu (patrz także EMSP ).

^ Z 26 1A POD Zastąpić Pierwotnie przeznaczony do użycia jako znak sterujący transmisją, aby wskazać, że odebrano zniekształcone lub nieprawidłowe znaki. Często był używany do innych celów, gdy błędów w paśmie , którą zapewnia, jest niepotrzebna, zwłaszcza tam, gdzie stosowane są solidne metody wykrywania i korygowania błędów lub gdzie oczekuje się, że błędy będą na tyle rzadkie, że użycie znaku do wskazane inne cele. W DOS , Windows , CP/M i pochodnych Digital Equipment Corporation służy do wskazania końca pliku, zarówno podczas pisania na terminalu, jak i czasami w plikach tekstowych przechowywanych na dysku.
^[ 27 1B WYJŚCIE Ucieczka \mi
Klawisz Esc na klawiaturze spowoduje wysłanie tego znaku w większości systemów. Może być używany w programowych interfejsach użytkownika do wychodzenia z ekranu, menu lub trybu lub w protokołach sterowania urządzeniami (np. drukarkami i terminalami) do sygnalizowania, że ​​następuje specjalna sekwencja poleceń, a nie normalny tekst. W systemach opartych na ISO/IEC 2022 , nawet jeśli używany jest inny zestaw kodów kontrolnych C0, ten oktet musi zawsze reprezentować znak ucieczki.

^\ 28 1C FS Separator plików Może służyć jako ograniczniki do oznaczania pól struktur danych. W przypadku poziomów hierarchicznych US jest najniższym poziomem (dzieląc elementy danych w postaci zwykłego tekstu), podczas gdy RS, GS i FS mają rosnący poziom, aby podzielić grupy złożone z elementów niższego poziomu.

Format Unix info używa US, po którym następuje opcjonalne wysunięcie strony i podział linii, aby zaznaczyć początek węzła.

MARC 21 używa US jako separatora podpól, RS jako terminatora pola i GS jako terminatora rekordu.

W aktualnym wydaniu IPTC 7901 , jeśli nie są używane do innych celów, zaleca się stosowanie US jako separatora kolumn w tabelach, FS jako „Central Field Separator” w tabelach oraz odpowiednio GS i RS do oznaczania następującej po nich spacji lub myślnik-minus odpowiednio jako nieprzerywające lub miękkie (w zestawach znaków, które nie dostarczają wyraźnych znaków NBSP i SHY).

podziału w Pythonie traktuje FS, GS i RS, ale nie US, jako separatory oprócz znaków podziału wiersza.

^] 29 1D GS Separator grupy
^^ 30 1E RS Separator rekordów
^_ 31 1F NAS Separator jednostek
Chociaż technicznie nie należą do zakresu znaków kontrolnych C0, następujące dwa znaki są zdefiniowane w ISO/IEC 2022 jako zawsze dostępne, niezależnie od tego, które zestawy znaków kontrolnych i znaków graficznych zostały zarejestrowane. Można o nich myśleć, że mają pewne cechy znaków kontrolnych.
  32 20 Sp Przestrzeń Przestrzeń jest znakiem graficznym. Ma wizualną reprezentację polegającą na braku symbolu graficznego. Powoduje przesunięcie aktywnej pozycji o jedną pozycję znaku. W niektórych aplikacjach Spację można uznać za „separator słów” najniższego poziomu, który ma być używany z sąsiednimi znakami separatora.
^? 127 7F DEL Usuwać Technicznie nie należący do zakresu znaków kontrolnych C0, był pierwotnie używany do oznaczania usuniętych znaków na taśmie papierowej, ponieważ każdy znak można było zmienić na wszystkie, dziurkując wszędzie dziury. Na VT100 jest to znak generowany przez klawisz oznaczony ⌫, zwykle nazywany backspace na nowoczesnych komputerach i nie odpowiada klawiszowi kasowania komputera .

Nazwy numerów kategorii

Kilka podstawowych kodów kontrolnych ASCII podzielono na kilka kategorii, a czasami nadano im alternatywne skrócone nazwy składające się z tej kategorii i liczby:

  • Sterowanie transmisją: TC 1 (SOH), TC 2 (STX), TC 3 (ETX), TC 4 (EOT), TC 5 (ENQ), TC 6 (ACK), TC 7 (DLE), TC 8 (NAK) , TC 9 (SYN), TC 10 (ETB).
  • 0 Efektory formatu: Wf (BS), Wf 1 (HT), Wf 2 (LF), Wf 3 (VT), Wf 4 (FF), Wf 5 (CR).
  • Sterowanie urządzeniem: DC 1 , DC 2 , DC 3 , DC 4 .
  • Separatory informacji: IS 1 (USA), IS 2 (RS), IS 3 (GS), IS 4 (FS).
  • 0 Blokowanie przesunięć: LS (SI), LS 1 (SO).
  • Inne: NUL, BEL, CAN, EM, SUB, ESC.

Norma ISO/IEC 2022 (ECMA-35) odnosi się do przesunięć blokowania C0 jako LS0 i LS1 w środowiskach 8-bitowych oraz jako SI i SO w środowiskach 7-bitowych.

Pierwsza edycja ASCII z 1963 roku sklasyfikowała DLE jako sterowanie urządzeniem, a nie sterowanie transmisją, i nadała mu skrót DC0 („sterowanie urządzeniem zarezerwowane dla ucieczki łącza danych”).

efektorów formatu (FE) definiują i uruchamiają formatowanie (takie jak podziały wierszy ), które wpływa na sposób układania i renderowania znaków graficznych, w przeciwieństwie do kontrolowania innych funkcji urządzeń sprzętowych lub innych efektów ubocznych. Efektory formatu C0 są dozwolone w sekwencjach ISO/IEC 6429 DCS , OSC , PM i APC . Separatory informacji i efektory formatu C0 (minus BS ) to jedyne kody kontrolne C0 z semantyką zdefiniowaną przez standard Unicode, a interpretację pozostałych kontrolek C0 pozostawiono protokołom wyższego poziomu.

Norma ISO/IEC 2022 (ECMA-35) wymaga, aby zestawy kodów kontrolnych C0 zawierające dziesięć kodów kontroli transmisji (TC) ASCII były zakodowane w ich lokalizacjach ASCII. Zabrania również włączania tych dziesięciu elementów sterujących transmisją do zestawu kodu sterującego C1 i zabrania włączania elementów sterujących transmisją poza tymi dziesięcioma do zestawu sterującego C0.

Zmodyfikowane zestawy kodów sterujących C0

Chociaż zestawy kodów kontrolnych C0 zwykle zachowują niezmienioną większość kodów kontrolnych ASCII, rejestrowana jest liczba, która zastępuje pewne funkcje kontrolne alternatywami. Wybrane z nich, z wyłączeniem tych związanych z Videotex , przedstawiono poniżej.

Sekw grudzień Klątwa Zastąpiony W zestawach kodów skrót Nazwa Opis
^ Ja 09 09 HT NATS, IPTC FO Formatowanie Używany w danych tabelarycznych do przejścia do następnej pozycji w tabeli (zachowując w tym względzie semantykę „Tab”) oraz w standardowych formatach do oznaczenia następnej fazy. Obecna specyfikacja IPTC zamiast tego zaleca używanie zwykłych kontrolek ASCII C0 oraz US jako podziału kolumn w tabelach.
^ K 11 0B VT NATS, IPTC ECD Koniec instrukcji Ogranicza koniec instrukcji typograficznej przeznaczonej dla urządzenia składu.
^ L 12 0C FF NATS, IPTC SCD Rozpoczęcie instrukcji Wyznacza początek instrukcji typograficznej przeznaczonej dla urządzenia składu.
^ M 13 0D CR NATS, IPTC QL Quad w lewo Kończy linię, wskazując, że powinna być wyrównana do lewej. Obecna specyfikacja IPTC zamiast tego zaleca używanie zwykłych kontrolek ASCII C0 i reprezentowanie tej funkcji za pomocą < CR LF .
^ N 14 0E WIĘC NATS UR Górna szyna Rozpoczyna wyróżniony region tekstu. Używany w skandynawskiej transmisji tekstu dziennikarskiego od 1975 r .; Zalecenia IPTC z 1976 r. Zamiast tego stosowały FT2 i FT3 (patrz poniżej). Obecna specyfikacja IPTC zamiast tego zaleca używanie zwykłych kontrolek ASCII C0 i oznaczanie tej funkcji znakiem ^ .
^ O 15 0F SI NATS LR Dolna szyna Kończy wyróżniony region tekstu. Używany w skandynawskiej transmisji tekstu dziennikarskiego od 1975 r .; Zalecenia IPTC z 1976 r. Zamiast tego wykorzystywały FT1 (patrz poniżej). Obecna specyfikacja IPTC zamiast tego zaleca używanie zwykłych kontrolek ASCII C0 i oznaczanie tej funkcji znakiem @ .
^ P 17 11 DC1 IPTC FT1 Czcionka pierwsza Przełącza na zwykły krój pisma, tj. wyłącza pogrubienie lub kursywę.
^ R 18 12 ST2 IPTC FT2 Czcionka druga Przełącza na kursywę.
^ S 19 13 DC3 IPTC FT3 Czcionka trzecia Przełącza na pogrubioną czcionkę.
^ X 24 18 MÓC NATS, IPTC KW Zabij Słowo Usuwa poprzednie słowo (usuwa z powrotem do ostatniej spacji włącznie lub z powrotem do poprzedniego końca wiersza i z wyłączeniem, w zależności od tego, co napotka jako pierwsze). Zachowuje semantykę „Anuluj” w tym zakresie, ale ma bardziej specyficzną funkcję.
^ Y 25 19 EM T.61 / T.51 , samodzielny SS2 Jedna zmiana druga Nieblokujący kod zmiany biegów dla G2 ; reprezentacja C0 umożliwiająca reprezentację jednego bajtu w środowisku 7-bitowym.
^\ 28 1C FS NATS, IPTC, Samodzielny SS, SS2 Super zmiana lub pojedyncza zmiana druga Nieblokujący kod zmiany .
JIS C 6225 CEX Rozszerzenie kontroli Wprowadza sekwencję kontrolną określoną przez wycofany obecnie JIS C 6225, oznaczony jako JIS X 0207 w późniejszych źródłach. Obejmowały one sekwencje do kontrolowania zachowania tekstu w pionie, indeksów górnych i dolnych oraz do przesyłania niestandardowej grafiki znaków .
^] 29 1D GS NATS, IPTC QC Centrum Quadów Kończy linię, wskazując, że powinna być wyśrodkowana.
T.61 / T.51 SS3 Jedna zmiana trzy Nieblokujący kod zmiany biegów dla G3 ; reprezentacja C0 umożliwiająca reprezentację jednego bajtu w środowisku 7-bitowym.
^^ 30 1E RS NATS, IPTC QR Quad w prawo Kończy linię, wskazując, że powinna być wyrównana do prawej.
^_ 31 1F NAS NATS, IPTC JY Uzasadniać Kończy wiersz, który ma być wyrównany.

Inne zestawy kodów sterujących C0

Telegazeta definiuje zupełnie inny zestaw kodów kontrolnych . W formatach, w których nie jest wymagana zgodność z kodami kontrolnymi C0 ECMA-48, te kody kontrolne są czasami odwzorowywane w sposób przezroczysty na zakres kodów kontrolnych Unicode C0 (od U+0000 do U+001F).

kontrole C1

Równolegle z opracowaniem wydania ISO 646 z 1972 r ., które zrewidowało standard w celu wprowadzenia koncepcji krajowych wersji kodu oprócz ASCII pochodzącego z USA, trwały również prace mające na celu zdefiniowanie mechanizmów rozszerzających dla ASCII, mające zastosowanie zarówno do środowisk 7-bitowych, jak i 8-bitowych, które zostałyby opublikowane jako ECMA-35 i ISO 2022 .

Mechanizmy te zostały zaprojektowane w taki sposób, aby każdy zgodny kod 8-bitowy mógł zostać przekonwertowany na odpowiedni kod 7-bitowy i odwrotnie . W środowisku 7-bitowym kontrolka Shift Out ( SO ) zmieniłaby znaczenie 94 bajtów od 0x21 do 0x7E ( tj . kontrola zmieniłaby je z powrotem. W środowisku 8-bitowym, zamiast używania kodów przesunięcia, ósmy bit został ustawiony na bajcie odnoszącym się do dodatkowego zestawu znaków graficznych. Oznaczało to, że bajty od 0xA1 do 0xFE były używane jako dodatkowe znaki graficzne. Znaki kontrolne C0, na które nie ma wpływu stan przesunięcia kodu 7-bitowego, zawsze miały być reprezentowane w kodzie 8-bitowym z nieustawionym ósmym bitem. W konsekwencji nieużywane w inny sposób bajty z zakresu od 0x80 do 0x9F mogłyby być użyte dla dodatkowych kodów kontrolnych, które zamiast tego byłyby reprezentowane jako 0x1B 0x40 do 0x1B 0x5F ( ESC @ do ESC _ ) w kodzie 7-bitowym. Te dodatkowe kody kontrolne stają się znane jako kody kontrolne C1 . Aby zachować kompatybilność z reprezentacją 7-bitową, pierwotnie pozostawiono niezdefiniowane zachowanie bajtów 0xA0 i 0xFF .

Pierwszym zestawem kodów kontrolnych C1, który został zarejestrowany do użytku z ISO 2022, był DIN 31626 , specjalistyczny zestaw do użytku bibliograficznego, który został zarejestrowany w 1979 r. Zestaw ogólnego zastosowania ISO / IEC 6429 został zarejestrowany w 1983 r., chociaż specyfikacja ECMA-48 na których została oparta, została po raz pierwszy opublikowana w 1976 roku.

Kolejne edycje norm zmieniały w pewnym stopniu przepisy. Na przykład kolejna rewizja ECMA-35 i ISO 2022 w 1985 roku wprowadziła koncepcję 96-kodowego zestawu znaków graficznych. W kodzie 8-bitowym pozwoliło to na użycie całego zakresu od 0xA0 do 0xFF dla znaków graficznych. Użycie zestawów 96-kodowych oznaczało również, że znaczenie bajtów 0x20 i 0x7F w odpowiednim 7-bitowym kodzie mogło różnić się od „Spacja” i „Usuń”, chyba że kod był w stanie Shift In. Użycie 96-kodowych zestawów dla zestawu G0 (Shift In) nie było możliwe.

Zgodnie z tą poprawioną 8-bitową strukturą kodu ISO 2022, ISO 8859 definiuje zestawy znaków do zakodowania w zakresie 0xA0–FF, w połączeniu ze znakami graficznymi ASCII w zakresie 0x20–7E, i rezerwuje bajty spoza tych zakresów do użytku jako kody niegraficzne według innych specyfikacji, takich jak ISO / IEC 6429. Unicode dziedziczy swoje pierwsze 256 punktów kodowych z ISO 8859-1, a zatem obejmuje również zakres zarezerwowany dla zestawu kodów kontrolnych C1, chociaż w większości pozostawia ich funkcję do zdefiniowania przez protokoły wyższego poziomu, z sugerowaną normą ISO/IEC 6429 jako domyślną.

Kody kontrolne C1 do ogólnego użytku

  Są to najczęściej stosowane rozszerzone kody kontrolne, zdefiniowane w normach ISO/IEC 6429 , ECMA -48 i JIS X 0211 (wcześniej JIS C 6323). W przypadku korzystania z ISO / IEC 2022 są one oznaczane jako aktywny zestaw znaków kontrolnych C1 z sekwencją 0x1B 0x22 0x43 ( ESC " C ). Chociaż Unicode nie wymaga określonego zestawu kodów kontrolnych C1, pozostawiając ich interpretację do określenia przez protokoły wyższego poziomu i określa zachowanie tylko dla U + 0085, sugeruje interpretację kodów kontrolnych C1 zgodnie z ISO / IEC 6429 w przypadku braku użycia do innych celów. W poniższej tabeli wymieniono również trzy kody kontrolne obok kody ISO/IEC 6429 w RFC 1345 , ale w rzeczywistości nie zdefiniowane przez ISO/IEC 6429 ( PAD , HOP i SGC ).

Z wyjątkiem SS2 i SS3 w tekście EUC-JP oraz NEL w tekście transkodowanym z EBCDIC , 8-bitowe formy tych kodów prawie nigdy nie są używane. CSI , DCS i OSC są używane do sterowania terminalami tekstowymi i emulatorami terminali , ale prawie zawsze przy użyciu ich 7-bitowych reprezentacji kodu ucieczki. Ich jednobajtowe reprezentacje zgodne z ISO/IEC 2022 są nieprawidłowe w UTF-8 , a kodowanie UTF-8 odpowiadających im punktów kodowych ma długość dwóch bajtów, podobnie jak ich formy kodu ucieczki (na przykład CSI w U+009B jest kodowane jako bajty 0xC2, 0x9B w UTF-8), więc nie ma korzyści z ich używania zamiast równoważnej dwubajtowej sekwencji ucieczki. Kiedy te kody pojawiają się we współczesnych dokumentach, stronach internetowych, wiadomościach e-mail itp., zwykle mają na celu drukowanie znaków w tej pozycji w zastrzeżonym kodowaniu, takim jak Windows-1252 lub Mac OS Roman , które używają kodów C1 do zapewnienia dodatkowe znaki graficzne.

Oficjalne nazwy niektórych kodów C1 w języku angielskim zostały poprawione w najnowszym wydaniu normy dotyczącej ogólnie kodów kontrolnych (ISO 6429:1992 lub ECMA-48:1991), aby były neutralne w odniesieniu do używanych z nimi znaków graficznych, oraz nie zakładać, że tak jak w alfabecie łacińskim, wiersze są zapisywane na stronie od góry do dołu, a znaki są zapisywane w wierszu od lewej do prawej. Stosowane skróty nie zostały zmienione, ponieważ norma określiła już, że pozostaną one niezmienione, gdy norma zostanie przetłumaczona na inne języki. W przypadku zmiany nazwy, w poniższych tabelach w nawiasach podano również nazwę pierwotną, od której pochodzi skrót.

Esc+ grudzień Klątwa Akro Nazwa Opis
@ 128 80 PODKŁADKA Charakter wypełnienia Nie jest częścią ISO/IEC 6429 (ECMA-48). We wczesnych wersjach roboczych ISO 10646 był używany jako część proponowanego mechanizmu kodowania znaków innych niż ASCII. To użycie zostało usunięte w późniejszych wersjach roboczych. Mimo to jest używany przez dwubajtową formę o stałej długości do użytku wewnętrznego rozszerzonego kodu Unix (EUC) opartego na ISO-2022 do dopełniania lewymi znakami jednobajtowymi w zestawach kodów 1 i 3, podczas gdy NUL pełni tę samą funkcję dla kodu zestawy 0 i 2. Nie odbywa się to w zwykłym „spakowanym” formacie EUC.
A 129 81 CHMIEL Wysokie ustawienie oktetu   Nie jest częścią ISO/IEC 6429 (ECMA-48). We wczesnych wersjach roboczych ISO 10646 miał służyć jako sposób na wprowadzenie sekwencji wielobajtowych znaków zgodnych z ISO 2022 z tym samym pierwszym bajtem bez powtarzania wspomnianego pierwszego bajtu, zmniejszając w ten sposób długość; to zachowanie nigdy nie było częścią standardowej ani opublikowanej implementacji. Mimo to jego nazwa została zachowana jako standardowa nazwa punktu kodowego RFC 1345 .
B 130 82 BPH Przerwa dozwolona tutaj Podąża za znakiem graficznym, w którym dozwolony jest podział wiersza. Z grubsza odpowiednik miękkiego łącznika, z wyjątkiem tego, że środkiem wskazującym koniec wiersza niekoniecznie jest łącznik. Nie jest częścią pierwszego wydania ISO/IEC 6429. Zobacz także spacja o zerowej szerokości .
C 131 83 NBH Tutaj nie ma przerwy Podąża za graficznym charakterem, którego nie można złamać. Nie jest częścią pierwszego wydania ISO/IEC 6429. Zobacz także program łączący słowa .
D 132 84 IND Indeks Przesuń aktywną pozycję o jedną linię w dół, aby wyeliminować niejasności co do znaczenia LF. Przestarzałe w 1988 i wycofane w 1992 z ISO / IEC 6429 (odpowiednio 1986 i 1991 dla ECMA-48).
mi 133 85 NEL Następna linia Odpowiednik CR+LF. Używany do oznaczania końca linii na niektórych komputerach mainframe IBM.
F 134 86 SSA Początek wybranego obszaru Używany przez terminale zorientowane blokowo .
G 135 87 ESA Koniec wybranego obszaru
H 136 88 HTS
Zestaw tabulacji znaków Poziomy zestaw tabulacji
Powoduje ustawienie zatrzymania tabulacji znaku w aktywnej pozycji.
I 137 89 HTJ
Tabulacja znaków z uzasadnieniem Tabulacja pozioma z uzasadnieniem
Podobnie jak w przypadku tabulacji znaków, z tą różnicą, że zamiast spacji lub linii po poprzedzających znakach, aż do osiągnięcia następnego tabulatora, spacje lub linie są umieszczane przed aktywnym polem, tak że poprzedzający znak graficzny jest umieszczany tuż przed następnym tabulatorem.
J 138 8A VTS
Tabulacja liniowa Zestaw Tabulacja pionowa
Powoduje ustawienie zatrzymania tabulacji linii w aktywnej pozycji.
k 139 8B PLD
Częściowa linia do przodu Częściowa linia w dół

Używane do tworzenia indeksów dolnych i górnych w normie ISO/IEC 6429 , np. w drukarce. Indeksy dolne używają tekstu PLD PLU , podczas gdy indeksy górne używają PLD tekstu PLU .
Ł 140 8C PLU
Częściowa linia Do tyłu Częściowa linia W górę
M 141 8D RI Indeks wstecznego przesunięcia wiersza
N 142 8E SS2 Jednozmianowy 2 Następny znak odwołuje się odpowiednio do znaku graficznego z zestawu graficznego G2 lub G3. W systemach zgodnych z ISO/IEC 4873 (ECMA-43), nawet jeśli używany jest zestaw C1 inny niż domyślny, te dwa oktety mogą być używane tylko do tego celu.
O 143 8F SS3 Praca jednozmianowa 3
P 144 90 DCS Ciąg kontrolny urządzenia Po którym następuje ciąg drukowalnych znaków (od 0x20 do 0x7E) i efektorów formatu (od 0x08 do 0x0D), zakończony ST (0x9C). Może to być używane przez sekwencje sterujące o zmiennej długości dla terminali tekstowych i emulatorów terminali, takie jak zapytania terminfo .
Q 145 91 PU1 Użytek prywatny 1 Zarezerwowane dla funkcji bez znormalizowanego znaczenia do użytku prywatnego zgodnie z wymaganiami, z zastrzeżeniem uprzedniej zgody nadawcy i odbiorcy danych.
R 146 92 PU2 Prywatny użytek 2
S 147 93 STS Ustaw stan transmisji
T 148 94 CCH Anuluj znak Niszczący backspace, mający na celu wyeliminowanie niejasności co do znaczenia BS .
u 149 95 MW Wiadomość oczekująca
V 150 96 SPA Początek obszaru chronionego Używany przez terminale zorientowane blokowo .
W 151 97 EPA Koniec obszaru chronionego
X 152 98 SOS Początek ciągu Po którym następuje ciąg kontrolny zakończony ST (0x9C), który w przeciwieństwie do tych inicjowanych przez DCS , OSC , PM lub APC , może zawierać dowolny znak z wyjątkiem SOS lub ST. Nie jest częścią pierwszego wydania ISO/IEC 6429.

MARC 21 używa SOS i ST w rekordach w formacie Unicode do oznaczania ciągu, który powinien być ignorowany do celów sortowania, podczas gdy rekordy w formacie MARC-8 używają NSB i NSE w tym samym celu.

Y 153 99 SGC, SGCI Pojedynczy wprowadzający znak graficzny   Nie jest częścią ISO / IEC 6429. We wczesnych wersjach roboczych ISO 10646 był używany do kodowania pojedynczego znaku wielobajtowego bez wyłączania trybu HOP lub w celu umożliwienia dostępu do całego zestawu znaków z UCS-3, UCS-2 lub Latin-1 . Po nim następowałaby reprezentacja postaci w UCS-4 . W późniejszych wersjach roboczych ta funkcja została usunięta, mimo to nazwa została zachowana jako standardowa nazwa punktu kodowego RFC 1345 .
Z 154 9A SCI Pojedynczy wprowadzający znak Po którym następuje pojedynczy drukowalny znak (od 0x20 do 0x7E) lub efektor formatu (od 0x08 do 0x0D). Celem było zapewnienie środków, za pomocą których można by zdefiniować funkcję kontrolną lub znak graficzny, który byłby dostępny niezależnie od używanego zestawu graficznego lub kontrolnego. Definicje tego, co wywołałby kolejny bajt, nigdy nie zostały zaimplementowane w międzynarodowym standardzie. Nie jest częścią pierwszego wydania ISO/IEC 6429.
[ 155 9B CSI Introduktor sekwencji kontrolnej Służy do wprowadzania sekwencji sterujących, które przyjmują parametry.
\ 156 9C Św Terminator strun Kończy ciąg kontrolny o zmiennej długości zainicjowany przez DCS , SOS , OSC , PM lub APC .
] 157 9D OSC Komenda systemu operacyjnego Po którym następuje ciąg drukowalnych znaków (od 0x20 do 0x7E) i efektorów formatu (od 0x08 do 0x0D), zakończony ST (0x9C). Te trzy kody kontrolne były przeznaczone do użytku w celu umożliwienia sygnalizacji w paśmie informacji o protokole, ale są rzadko używane do tego celu.

Niektóre emulatory terminali , w tym xterm , obsługują sekwencje OSC do ustawiania tytułu okna i rekonfiguracji dostępnej palety kolorów. Mogą również wspierać zakończenie sekwencji OSC za pomocą BEL jako niestandardową alternatywę dla standardowego ST.

APC jest czasami używany do przesyłania poleceń Kermit , chociaż może to być wyłączone lub filtrowane ze względów bezpieczeństwa.

^ 158 9E PO POŁUDNIU Wiadomość dotycząca prywatności
_ 159 9F APC Polecenie programu użytkowego

Kody kontrolne C1 do użytku bibliograficznego

Następujący alternatywny zestaw kodów sterujących C1 jest zdefiniowany dla zastosowań bibliograficznych, takich jak systemy biblioteczne . Dotyczy to głównie zestawiania ciągów znaków i znaczników pól bibliograficznych. Nieco inne warianty są określone w niemieckiej normie DIN 31626 (opublikowanej w 1978 r. i od tego czasu wycofanej) oraz normie ISO ISO 6630 , z których ta ostatnia została również przyjęta w Niemczech jako DIN ISO 6630 . Tam, gdzie są one różne, zaznaczono w tabeli poniżej, jeśli ma to zastosowanie. MARC-8 wykorzystuje kodowanie NSB i NSE z tego zestawu i dodaje kilka dodatkowych efektorów formatu w lokalizacjach nieużywanych przez wersję ISO; jednak MARC 21 używa tego zestawu kontrolnego tylko w rekordach MARC-8, a nie w rekordach w formacie Unicode.

W przypadku stosowania mechanizmu rozszerzającego ISO/IEC 2022 zestaw DIN 31626 jest oznaczony jako aktywny zestaw znaków sterujących C1 sekwencją 0x1B 0x22 0x45 ( ESC " E ), a zestaw ISO 6630 / DIN ISO 6630 jest oznaczony sekwencją 0x1B 0x22 0x42 ( ESC "B "). Rozszerzenie zestawu ISO 6630 z 1985 r. Można również jawnie określić za pomocą sekwencji 0x1B 0x26 0x40 0x1B 0x22 0x42 ( ESC & @ ESC " B ).

Esc+ grudzień Klątwa Akro Nazwa Opis
@…F 128…134 80…86 - (skryty)
G 135 87 CUS Zbliżenie do sortowania (DIN 31626, ISO 6630) Deklaruje, że dwie kolejne sekwencje znaków oddzielone spacją lub separatorem powinny być traktowane jako jedno słowo do celów zestawiania.
H 136 88 NSB Rozpoczynają się znaki niesortujące (DIN 31626, ISO 6630, MARC 21) Oznacza początek sekwencji znaków, które mają być ignorowane przy porównywaniu. MARC 21 używa tego znaku w rekordach MARC-8 , ale używa 0x98 ( SOS ) w rekordach Unicode w tym samym celu.
I 137 89 NSE Koniec znaków niesortujących (DIN 31626, ISO 6630, MARC 21) Oznacza koniec sekwencji znaków, które mają być ignorowane przy porównywaniu. MARC 21 używa tego znaku w rekordach MARC-8, ale używa 0x9C ( ST ) w rekordach Unicode w tym samym celu.
J 138 8A FIL Wypełniająca postać (DIN 31626) Zastępuje obowiązkowy znak alfanumeryczny w polu.
k 139 8B TCI Tag we wskaźniku kontekstu (DIN 31626) W polu bibliograficznym, używany do odniesienia się do danych w innym polu bibliograficznym za pomocą numeru znacznika.
PLD Częściowa linia w dół (ISO 6630) Nie w oryginalnym wydaniu ISO 6630. W wydaniu ISO 6630 z 1985 r., używane dla częściowego obniżenia linii (patrz PLD powyżej).
Ł 140 8C ICI Numer identyfikacyjny we wskaźniku kontekstu (DIN 31626) W obrębie pola bibliograficznego, używany do odniesienia się do danych w innym rekordzie bibliograficznym za pomocą jego numeru identyfikacyjnego.
PLU Częściowe ustawienie (ISO 6630) Nie w oryginalnym wydaniu ISO 6630. W wydaniu ISO 6630 z 1985 r., używane do częściowego zestawienia (patrz PLU powyżej).
M 141 8D OSC Opcjonalna kontrola sylabizacji (DIN 31626) Oznacza granicę sylaby w długim słowie. Zobacz także myślnik miękki .
ZWJ Stolarz (MARC 21) W MARC-8 używany do łączenia o zerowej szerokości , podczas gdy U+200D jest używany w rekordach MARC w formacie Unicode.
N 142 8E SS2 Jednozmianowy 2 (DIN 31626) Kod zmiany bez blokady, patrz SS2 powyżej.
ZWNJ Nie stolarz (MARC 21) W MARC-8, używane dla Non-Joiner o zerowej szerokości , podczas gdy U+200C jest używane w rekordach MARC w formacie Unicode.
O 143 8F SS3 Praca jednozmianowa 3 (DIN 31626) Kod zmiany bez blokady, patrz SS3 powyżej.
P 144 90 - (skryty)
Q 145 91 EAB Osadzony początek adnotacji (DIN 31626, ISO 6630) Oznacza początek adnotacji o zmiennej długości, która jest osadzona w polu bibliograficznym, a nie oddzielona za pomocą oznaczenia treści.
R 146 92 EAE Koniec osadzonej adnotacji (DIN 31626, ISO 6630) Oznacza koniec osadzonej adnotacji o zmiennej długości.
S 147 93 JEST B Początek specyfikacji przedmiotu (DIN 31626) Oznacza początek ciągu określonych informacji o jakimś opisie, innym niż słowo kluczowe lub ciąg permutacji.
T 148 94 ISE Koniec specyfikacji przedmiotu (DIN 31626) Oznacza koniec ciągu określonych informacji.
u 149 95 SIB Rozpoczęcie interpolacji sortowania (ISO 6630) Oznacza początek sekwencji znaków używanych wyłącznie do celów sortowania.
V 150 96 SIE Koniec interpolacji sortowania (ISO 6630) Oznacza koniec ciągu znaków używanego wyłącznie do celów sortowania.
W 151 97 SSB Początek drugorzędnej wartości sortowania (ISO 6630) Oznacza początek łańcucha z podrzędną wartością sortowania.
X 152 98 SSE Koniec wartości sortowania wtórnego (ISO 6630) Oznacza koniec łańcucha z podrzędną wartością sortowania.
Y 153 99 INC Wskaźnik postaci niestandardowej (DIN 31626) Identyfikuje następujący niestandardowy znak.
Z 154 9A - (skryty)
[ 155 9B - (skryty)
\ 156 9C KWB Początek słowa kluczowego (DIN 31626, ISO 6630) Oznacza początek słowa kluczowego w polu bibliograficznym.
] 157 9D KWE Koniec słowa kluczowego (DIN 31626, ISO 6630) Oznacza koniec słowa kluczowego w polu bibliograficznym.
^ 158 9E PSB Początek łańcucha permutacji (DIN 31626, ISO 6630) Oznacza początek łańcucha, który ma być permutowany do przodu elementu podczas generowania odniesień lub indeksów . Zakończony PSE lub końcem elementu.
_ 159 9F PSSE Koniec łańcucha permutacji (DIN 31626, ISO 6630) Oznacza koniec sznurka, który ma być permutowany do przodu elementu.

Inne zestawy kodów sterujących C1

EBCDIC definiuje 16 dodatkowych kodów kontrolnych, oprócz tych obecnych w ASCII. W przypadku mapowania na Unicode lub ISO 8859 kody te są mapowane na znaki kontrolne C1 w sposób określony przez IBM Character Data Representation Architecture (CDRA).

Chociaż domyślne mapowanie formantu New Line (NL) jest zgodne z normą ISO/IEC 6429 NEL (0x85; chociaż jego mapowanie jest czasami zamieniane na LF, zgodnie z konwencją zakończenia linii systemu UNIX), pozostałe kody sterujące nie odpowiadają ISO/IEC 6429. Na przykład kontrolny SPS EBCDIC (0x09, odwzorowany na 0x8D) i kontrolny PLU ECMA-48 (0x8C) są używane do rozpoczęcia indeksu górnego lub końcowego indeksu dolnego, ale nie są mapowane na siebie. Można zatem uznać, że kod EBCDIC odwzorowany w rozszerzonym ASCII ma własny zestaw C1, chociaż nie jest zarejestrowany w rejestrze ISO-IR do użytku z ISO/IEC 2022 .

Różne wyspecjalizowane zestawy kodów kontrolnych C1 są zarejestrowane do użytku w różnych formatach Videotex .

Unikod

Unicode rezerwuje 65 punktów kodowych w ogólnej kategorii Cc (kontrola) w celu zapewnienia zgodności z ISO/IEC 2022 . To są:

Unicode określa semantykę tylko dla U+0009–U+000D, U+001C–U+001F i U+0085. Pozostałe kody kontrolne są przezroczyste dla Unicode, a ich znaczenie pozostawiono protokołom wyższego poziomu.

Poza tym Unicode zawiera dodatkowe znaki efektorowe formatu, takie jak znaczniki, osadzenia, izolaty i wyskakujące elementy do jawnego formatowania dwukierunkowego oraz elementy łączące i niełączące o zerowej szerokości do kontrolowania użycia ligatury. Jednak otrzymują one ogólną kategorię Cf (format), a nie Cc .

Zobacz też

przypisy