Инструменты для преобразования 8-битных управляющих символов C1 в ESC-последовательности?
Стандарт ECMA-48 ("escape-последовательности ANSI") описывает два способа кодирования набора управляющих кодов C1: использование двухсимвольных последовательностей ESC или, альтернативно, использование 8-разрядных управляющих символов.
В статьях Википедии объясняется, что двухсимвольные последовательности ESC более подходят для использования с UTF-8.
Цитирование из escape-кода ANSI:
Стандарт гласит, что в 8-битных средах эти двухбайтовые последовательности могут быть объединены в один управляющий код C1 в диапазоне 0x80–0x9F. Однако на современных устройствах эти коды часто используются для других целей, таких как части UTF-8 или для символов CP-1252, поэтому используется только 2-байтовая последовательность.
и из контрольных кодов C0 и C1:
Символам C1 в Unicode требуется 2 байта для кодирования в UTF-8 (например, CSI в U+009B кодируется как байты 0xC2, 0x9B в UTF-8). Таким образом, соответствующие функции управления чаще доступны с использованием эквивалентной двухбайтовой escape-последовательности, предназначенной для использования с системами, которые имеют только 7-битные байты.
Есть ли какие-либо инструменты командной строки, которые можно использовать для прямого преобразования 8-битных управляющих символов C1 (как указано в ECMA-48) в двухсимвольные последовательности ESC?
Моя лучшая попытка на данный момент - попытаться использовать iconv
:
$ printf $(echo -en "\x9b") | iconv --from-code=ANSI_X3.4 --to-code=UTF-8 | od -t x1
iconv: illegal input sequence at position 0
В целях отладки я использую od -t x1
сделать результат обратно в шестнадцатеричное. Результат, который я надеюсь получить, будет таким же, как результат выполнения:
$ printf $(echo -en "\x27[") | od -t x1
0000000 27 5b
0000002
Другими словами, существует ли инструмент командной строки, где вы можете передать в управляющий символ C1, например \x9b
и получить обратную последовательность, как \x27[
?
РЕДАКТИРОВАТЬ: Или, как справедливо предлагает egmont, более уместно, интерактивный инструмент, а не то, что вы трубите в.