2012-01-15 3 views
4

j'ai données d'une forme: v = "\xc5\x84"impression chaîne d'octets UTF-8-codé

Ceci est une représentation d'octets d'un caractère codé utf-8 « N ».

Comment imprimer >> ñ < < en utilisant la variable v?

J'utilise python 2.7.2

dans l'original la variable v chaîne contenue:

v = "\\xc5\\x84" (double barre oblique inverse)

vs

v = "\xc5\x84" (antislashs)

qui est en lui-même un caractère utf-8 valide.

Répondre

7

Modifier Dans ma machine, la sortie dépend du shell/python utilisé, comme indiqué ci-dessous.
Comme l'a commenté Klaus un acteur majeur ici serait le paramètre de paramètres régionaux dans votre système.

>>> v = "\xc5\x84" 

>>> print v #in pycrust shell python 2.6 
Å„ 
>>> 

>>> print (v) #in idle python 3.2 
Å 
>>> 

la machine a les paramètres suivants:

>>> import locale 
>>> locale.getlocale() 
('es_ES', 'cp1252') 

Indépendamment de ce paramètre, vous obtenez votre personnage avec

>>> print v.decode('utf-8') 
ń 
>>> 
+1

+1 Cela a les meilleures chances de fonctionner. Si le shell utilisé est la fenêtre d'invite de commandes (appelée 'cmd.exe') dans Windows, il ne fonctionnera pas dans les environnements locaux comme les États-Unis et l'Europe de l'Ouest (le codage est' cp437' ou 'cp850'). Paramètres régionaux d'Europe avec l'encodage 'cp852 '. –

-2

Uhm, vous n'avez pas besoin de faire quelque chose de spécial. .. C'est juste print v?

>>> v = "\xc5\x84" 
>>> print v 
ń 
+0

La réponse est-elle dépendante de l'interpréteur python? B'coz quand j'ai imprimé v la sortie était '┼ä'. J'utilise python 2.6 – RanRag

+1

Je ne peux pas obtenir une impression correcte directement ni dans python 2.6 (pycrust) ni dans python 3.2 (idle). Pourriez-vous commenter votre réponse? – joaquin

+0

@joaquin Peut-être ... J'utilise python 2.7.2 comme l'OP, mais ça marche aussi pour moi dans python 2.6. Peut-être être lié à la coquille bien? Mes paramètres régionaux sont définis sur UTF-8 ('LC_CTYPE =" UTF-8 "') –

Questions connexes