Какая кодировка использует префикс \ x (обратная косая черта x)? - PullRequest
31 голосов
/ 21 мая 2009

Я пытаюсь декодировать текст с префиксом "специальных символов" с \ x . Я разработал следующие сопоставления вручную:

\x28   (
\x29   )
\x3a   :

e.g. 12\x3a39\x3a03 AM

Кто-нибудь узнает, что это за кодировка?

Ответы [ 3 ]

31 голосов
/ 21 мая 2009

Это ASCII . Все вхождения четырех символов \xST преобразуются в 1 символ, код ASCII которого ST шестнадцатеричный ), где S и T являются любыми из 0123456789abcdefABCDEF.

17 голосов
/ 21 мая 2009

Обозначение '\xAB' используется в C, C ++, Perl и других языках, использующих реплику из C, как способ выражения шестнадцатеричных кодов символов в середине строки.

Обозначение '\007' означает использование восьмеричного кода символа, когда после обратной косой черты есть цифры.

В C99 и более поздних версиях вы также можете использовать \uabcd и \U00abcdef для кодирования символов Юникода в шестнадцатеричном формате (требуется 4 и 8 шестнадцатеричных цифр; первые две шестнадцатеричные цифры в \U должны быть 0, чтобы допустимый, и часто третья цифра тоже будет 0 - 1 является единственным другим допустимым значением).

Обратите внимание, что в C восьмеричные экранирования ограничены максимум 3 цифрами, а шестнадцатеричные экранирования не ограничены 2 или 3 цифрами; шестнадцатеричное экранирование заканчивается первым символом, который не является шестнадцатеричной цифрой. В вопросе последовательность "12\x3a39\x3a03". Это строка, содержащая 4 символа: 1, 2, \x3a39 и \x3a03. Фактическое значение, используемое для 4-значных шестнадцатеричных символов, определяется реализацией. Чтобы достичь желаемого результата (используя \x3A для представления двоеточия :), в коде нужно использовать конкатенацию строк:

"12\x3a" "39\x3a" "03"

Теперь содержит 8 символов: 1, 2, :, 3, 9, :, 0, 3.

0 голосов
/ 21 мая 2009

Я предполагаю, что вы имеете дело с строкой Unicode, которая была закодирована иначе, чем поток вывода, в который она была отправлена. то есть. вывод строки utf-16 на устройство latin-1. В этой ситуации определенные символы будут выводиться как escape-значения, чтобы избежать отправки управляющих символов или неправильных символов на устройство вывода. Это происходит в Python по крайней мере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...