Я пытаюсь декодировать текст, который префикс некоторых специальных символов с помощью \x. Я разработал следующие сопоставления вручную:
\x28 (
\x29 )
\x3a :
e.g. 12\x3a39\x3a03 AM
Кто-нибудь знает, что такое кодировка?
Я пытаюсь декодировать текст, который префикс некоторых специальных символов с помощью \x. Я разработал следующие сопоставления вручную:
\x28 (
\x29 )
\x3a :
e.g. 12\x3a39\x3a03 AM
Кто-нибудь знает, что такое кодировка?
Это ASCII. Все вхождения четырех символов \xST
преобразуются в 1 символ, код ASCII которого ST
(в hexadecimal), где S
и T
- любые из 0123456789abcdefABCDEF
.
Обозначение '\xAB'
используется в C, С++, Perl и других языках, берущих cue из C, как способ выражения шестнадцатеричных кодов символов в середине строки.
Обозначение '\007'
означает использование восьмеричного кода символа, когда после обратного слэша есть цифры.
В C99 и более поздних версиях вы также можете использовать \uabcd
и \U00abcdef
для кодирования символов Unicode в шестнадцатеричном формате (с требуемыми шестнадцатеричными цифрами 4 и 8, первые две шестнадцатеричные цифры в \U
должны быть 0
, чтобы быть действительный, и часто третья цифра будет 0
тоже - 1
является единственным другим допустимым значением).
Обратите внимание, что в C восьмеричные escape-лимиты ограничены максимум тремя цифрами, но шестнадцатеричные escape-последовательности не ограничены 2 или 3 цифрами; шестнадцатеричный escape заканчивается на первом символе, а не шестнадцатеричной цифрой. В этом вопросе последовательность "12\x3a39\x3a03"
. Это строка, содержащая 4 символа: 1
, 2
, \x3a39
и \x3a03
. Фактическое значение, используемое для четырехзначных шестнадцатеричных символов, определяется реализацией. Для достижения желаемого результата (используя \x3A
для представления двоеточия :
), код должен будет использовать конкатенацию строк:
"12\x3a" "39\x3a" "03"
Теперь это содержит 8 символов: 1
, 2
, :
, 3
, 9
, :
, 0
, 3
.
Я предполагаю, что вы имеете дело с строкой unicode, которая была закодирована иначе, чем выходной поток, на который он был отправлен. то есть. вывод строки utf-16 на устройство latin-1. В этой ситуации определенные символы будут выводиться как escape-значения, чтобы избежать отправки управляющих символов или неправильных символов на устройство вывода. Это происходит в python по крайней мере.