J'essaie de décoder le texte qui préfixe certains "caractères spéciaux" avec\x . J'ai élaboré manuellement les correspondances suivantes:
\x28 (
\x29 )
\x3a :
e.g. 12\x3a39\x3a03 AM
Est-ce que quelqu'un reconnaît ce qu'est cet encodage?
C'est ASCII . Toutes les occurrences des quatre caractères \xST
sont converties en un caractère dont le code ASCII est ST
(in hexadecimal ), où S
et T
sont quelconques de 0123456789abcdefABCDEF
.
La notation '\xAB'
est utilisée en C, C++, Perl et dans d’autres langages utilisant Cue, pour exprimer des codes de caractères hexadécimaux au milieu d’une chaîne.
La notation '\007'
signifie utiliser octal pour le code de caractère, lorsqu'il y a des chiffres après la barre oblique inverse.
Dans C99 et les versions ultérieures, vous pouvez également utiliser \uabcd
et \U00abcdef
pour coder les caractères Unicode en hexadécimal (avec 4 et 8 chiffres hexadécimaux requis; les deux premiers chiffres hexadécimaux dans \U
doivent être 0
pour être valides, et souvent le troisième chiffre sera également 0
- 1
est la seule autre valeur valide).
Notez qu'en C, les échappements octaux sont limités à 3 chiffres au maximum, mais les échappements hexadécimaux ne sont pas limités à 2 ou 3 chiffres; l'échappement hexadécimal se termine au premier caractère qui n'est pas un chiffre hexadécimal. Dans la question, la séquence est "12\x3a39\x3a03"
. C'est une chaîne contenant 4 caractères: 1
, 2
, \x3a39
et \x3a03
. La valeur réelle utilisée pour les caractères hexadécimaux à 4 chiffres est définie par l'implémentation. Pour obtenir le résultat souhaité (en utilisant \x3A
pour représenter deux points :
), le code devrait utiliser la concaténation de chaînes:
"12\x3a" "39\x3a" "03"
Celui-ci contient maintenant 8 caractères: 1
, 2
, :
, 3
, 9
, :
, 0
, 3
.
Je suppose que vous avez affaire à une chaîne unicode codée différemment du flux de sortie auquel elle a été envoyée. c'est à dire. une sortie de chaîne utf-16 sur un périphérique latin-1. Dans cette situation, certains caractères seront sortis en tant que valeurs d'échappement pour éviter d'envoyer des caractères de contrôle ou des caractères incorrects au périphérique de sortie. Cela se produit au moins en python.