- •Зачем нужны кодировки символов?
- •Си. Представление символов
- •Задания
- •Кроме латиницы Функция setlocale
- •Задания
- •Приложение 1. Управляющие символы
- •Управляющие коды в Си (эскейп-последовательности)
- •Приложение 2. Расширенная ascii таблица
- •Кодовая страница
- •Альтернативная кодировка
- •Windows кодировка
- •Приложение 3. Спецификаторы строки формата
Задания
Проверьте работу программы вводом строк Hello! и Привет!. Удостоверьтесь, что «базовые» варианты решения выполняют заданное преобразование лишь для для первой из них, в то время как «интернационализованное» решение действует и в отношении кириллического ввода.
Разработайте варианты программы, выполняющие (вновь для латиницы) a. преобразование верхнего регистра в нижний и b. «переключение» регистра — Hello! → hELLO!. (Указание: воспользуйтесь стандартными функциями islower и isupper.[9][10])
Приложение 1. Управляющие символы
Поскольку ASCII изначально предназначался для обмена информацией, в нём, кроме информационных символов, используются символы-команды для управления связью. Это обычный набор специальных сигналов, применявшийся и в других докомпьютерных средствах обмена сообщениями (азбука Морзе, семафорная азбука), дополненный с учётом специфики устройства. Ниже приведен список символов-команд. Они занимают первые две строки в таблице и имеют коды от $0 до $1F. Лишь немногие из них в настоящее время используются для управления вводом-выводом. Остальные имеют графическое представление. В списке символов после названия каждого символа указан его 16-ричный код.
NUL, 00 — Null, пустой. Всегда игнорировался. На перфолентах единица представлялась дырочкой, нуль — отсутствием дырочки. Поэтому пустые части перфоленты до начала и после конца сообщения состояли из таких символов. Сейчас используется во многих языках программирования как конец строки. Строка понимается как последовательность символов. В некоторых операционных системах NUL — последний символ любого текстового файла.
SOH, 01 — Start Of Heading, начало заголовка.
STX, 02 — Start of Text, начало текста. Текстом называлась часть сообщения, предназначенная для печати. Адрес, контрольная сумма и т. д. входили или в заголовок, или в часть сообщения после текста.
ETX, 03 — End of Text, конец текста. Здесь телетайп прекращал печатать. Использование символа Ctrl-C, имеющего код 03, для прекращения работы чего-то (обычно программы), восходит ещё к тем временам.
EOT, 04 — End of Transmission, конец передачи. В системе UNIX Ctrl-D, имеющий тот же код, означает конец файла при вводе с клавиатуры.
ENQ, 05 — Enquire. Прошу подтверждения.
ACK, 06 — Acknowledgement. Подтверждаю.
BEL, 07 — Bell, звонок, звуковой сигнал. Сейчас тоже используется.
BS, 08 — Backspace, возврат на один символ. Сейчас стирает предыдущий символ.
TAB, 09 — Tabulation. Обозначался также HT — Horizontal Tabulation, горизонтальная табуляция.
LF, 0A — Line Feed, перевод строки. Сейчас в конце каждой строчки текстового файла ставится либо этот символ, либо CR, либо и тот и другой (CR, затем LF), в зависимости от операционной системы. При выводе текста приводит к переводу строки.
VT, 0B — Vertical Tab, вертикальная табуляция.
FF, 0C — Form Feed, новая страница.
CR, 0D — Carriage Return, возврат каретки. Во многих языках программирования этот символ, обозначаемый \r, можно использовать для возврата в начало строчки без перевода строки. В некоторых операционных системах этот же символ, обозначаемый Ctrl-M, ставится в конце каждой строчки текстового файла перед LF.
SO, 0E — Shift Out, измени цвет ленты (использовался для двуцветных лент; цвет менялся обычно на красный). В дальнейшем обозначал начало использования национальной кодировки.
SI, 0F — Shift In, обратно к Shift Out.
DLE, 10 — Data Link Escape, следующие символы имеют специальный смысл.
DC1, 11 — Device Control 1, 1-й символ управления устройством — включить устройство чтения перфоленты.
DC2, 12 — Device Control 2, 2-й символ управления устройством — включить перфоратор.
DC3, 13 — Device Control 3, 3-й символ управления устройством — выключить устройство чтения перфоленты.
DC4, 14 — Device Control 4, 4-й символ управления устройством — выключить перфоратор.
NAK, 15 — Negative Acknowledgment, не подтверждаю. Обратно к Acknowledgment.
SYN, 16 — Synchronization. Этот символ передавался, когда для синхронизации было необходимо что-нибудь передать.
ETB, 17 — End of Text Block, конец текстового блока. Иногда текст по техническим причинам разбивался на блоки.
CAN, 18 — Cancel, отмена (того, что было передано ранее).
EM, 19 — End of Medium, кончилась перфолента и т. д.
SUB, 1A — Substitute, подставить. Ставится на месте символа, значение которого было потеряно или испорчено при передаче. Сейчас Ctrl-Z используется как конец файла при вводе с клавиатуры в системах DOS и Windows. У этой функции нет никакой очевидной связи с символом SUB.
ESC, 1B — Escape. Следующие символы — что-то специальное.
FS, 1C — File Separator, разделитель файлов.
GS, 1D — Group Separator, разделитель групп.
RS, 1E — Record Separator, разделитель записей.
US, 1F — Unit Separator, разделитель юнитов. То есть поддерживалось 4 уровня структуризации данных: сообщение могло состоять из файлов, файлы из групп, группы из записей, записи из юнитов.
DEL, 7F — Delete, стереть последний символ. Символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL. Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило забиванием его кода дырочками (обозначавшими логические единицы).
