comment imprimer des mots chinois dans mon code .. en utilisant python
C'est mon code:
print '哈哈'.decode('gb2312').encode('utf-8')
...et il imprime:
SyntaxError: Non-ASCII character '\xe5' in file D:\zjm_code\a.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Comment puis-je imprimer "哈哈'?
Mise à jour: Lorsque j'utilise le code suivant:
#!/usr/bin/python
# -*- coding: utf-8 -*-
print '哈哈'
... il imprime 鍝堝搱
. Ce n'est pas ce que je voulais obtenir.
Mon IDE est Ulipad, est-ce un bug avec l'IDE?
Deuxième Mise À Jour:
Ce code affichera les caractères à droite:
#!/usr/bin/python
# -*- coding: utf-8 -*-
print u'哈哈'.encode('gb2312')
...et quand je l'utilise:
#!/usr/bin/python
# -*- coding: utf-8 -*-
a='哈哈'
print a.encode('gb2312')
Traceback (most recent call last):
File "D:\zjm_code\a.py", line 5, in <module>
print a.encode('gb2312')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
...ou...
#!/usr/bin/python
# -*- coding: utf-8 -*-
a='哈哈'
print unicode(a).encode('gb2312')
Traceback (most recent call last):
File "D:\zjm_code\a.py", line 5, in <module>
print unicode(a).encode('gb2312')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
...il ne fonctionne pas. Comment puis-je imprimer la variable a
de manière appropriée?
grâce
source d'informationauteur zjm1126
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord déclarer un encodage, comme les messages d'erreur le dit clairement, -- il vous indique même à regarder ici pour plus de détails! Votre encodage est sans doute
gb2312
.BTW, il serait plus simple (avec la même déclaration de codage) pour faire
et vous pouvez même pas besoin de la
encode
partie, si votresys.stdout
a unencoding
attribut correctement configuré (dépend de votre terminal, système d'exploitation, etc).Vous devez spécifier l'encodage de la source python fichier de code, voici le codage utf-8. Il va en haut à droite sous le chemin de l'interpréteur python.
Si vous allez à la l'url dans le message d'erreur vous pouvez trouver plus d'informations sur la spécification de l'encodage d'un python fichier source.
Une fois que vous spécifier l'encodage du fichier source, vous ne devriez pas avoir à décoder le texte.
Le code suivant fonctionne pour moi:
La
#coding
commentaire indique à Python de l'encodage du fichier en lui-même, de sorte que vous pouvez incorporer des caractères UTF-8 dans directement. Et si vous commencez à partir d'une chaîne Unicode, il n'est pas nécessaire de les décoder et de les ré-encoder.Basé hors de la Volonté McCutchen réponse, cela fonctionne aussi:
Vous ne pouvez pas faire coder sur de caractères unicode. L'encodage est utilisé pour traduire tous les caractères encodés en unicode à d'autres de style de code. Il ne peut pas être utilisé à caractère unicode.
Dans la controverse façon, le décodage ne peut servir qu'à caractère non encodés en unicode pour traduire à caractère unicode.
Si vous déclarez une chaîne avec " u " personnage avant de la chaîne, vous permettra d'obtenir une chaîne de caractères codés en unicode. Vous pouvez utiliser isinstance(str, unicode) pour détecter si le str est encodé en unicode.
Essayer ce code ci-dessous. Astuce: dans Windows avec la version Chinoise, le code par défaut, le style est "gbk".
Vous devez vérifier que vous terminal de codage de caractères.
Sur mon terminal, j'ai d'abord définir l'encodage de caractères utf-8, tout va bien.
Quand je l'ai mis à GBK, le résultat est "鍝堝搱'.