La conversion de chaîne d'octets en chaîne unicode
J'ai un code tel que:
a = "\u0432"
b = u"\u0432"
c = b"\u0432"
d = c.decode('utf8')
print(type(a), a)
print(type(b), b)
print(type(c), c)
print(type(d), d)
Et de sortie:
<class 'str'> в
<class 'str'> в
<class 'bytes'> b'\\u0432'
<class 'str'> \u0432
Pourquoi, dans ce dernier cas, je vois un code de caractère, à la place du personnage?
Comment je peux transformer les Octets chaîne chaîne Unicode dans le cas d'une sortie j'ai vu le personnage, au lieu de son code?
Vous devez vous connecter pour publier un commentaire.
Dans des chaînes de caractères (Unicode ou des objets en Python 2),
\u
a une signification particulière, à savoir en disant: "voici un caractère Unicode spécifié par Unicode ID". Doncu"\u0432"
entraînera le caractère в.La
b''
préfixe vous dit c'est une séquence d'octets de 8 bits et les octets de l'objet n'a pas de caractères Unicode, de sorte que le\u
code n'a pas de signification particulière. Par conséquent,b"\u0432"
est juste l'ordre des octets\
,u
,0
,4
,3
et2
.Essentiellement, vous avez un 8-bit chaîne de caractères contenant pas de caractères Unicode, mais la spécification d'un caractère Unicode.
Vous pouvez convertir cette spécification à l'aide de l'échappement unicode codeur.
unicode_escape
a parfaitement fonctionnéAimé Lennart réponse. Il m'a mis sur la bonne voie pour résoudre le problème particulier que j'avais rencontrés. Ce que j'ai ajouté a la capacité de produire de l'html-code compatible pour \u???? les spécifications dans les chaînes. Fondamentalement, une seule ligne est nécessaire: l'
Tout cela est venu à propos d'un besoin de se convertir en JSON résultats pour quelque chose qui s'affiche bien dans un navigateur. Voici un code de test, qui est intégré à une application en nuage: