Comment convertir une chaîne de caractères utf-8 en Python
J'ai un navigateur qui envoie les caractères utf-8 pour mon Python serveur, mais quand je l'ai récupérer à partir de la chaîne de requête, le codage Python renvoie ASCII. Comment puis-je convertir la plaine de la chaîne utf-8?
REMARQUE: La chaîne de caractères passée à partir du web est déjà codé en UTF-8, je veux juste faire de Python de la traiter comme UTF-8, non ASCII.
- Essayez ce lien http://evanjones.ca/python-utf8.html
- Je pense qu'un meilleur titre serait Comment forcer une chaîne de caractères au format unicode sans traduction?
- En 2018, python 3 si vous obtenez ascii erreur de décodage ne
"some_string".encode('utf-8').decode('utf-8')
Vous devez vous connecter pour publier un commentaire.
^ C'est la différence entre une chaîne d'octets (plain_string) et une chaîne unicode.
^ Conversion en unicode et en spécifiant l'encodage.
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 2: invalid start byte
C'est mon code: ret=[] pour la ligne à csvReader: cline=[] pour elm en ligne: unicodestr = unicode(elm, 'utf-8') cline.append(unicodestr) ret.append(cline)unicode()
n'existe pas.u
retour à unstr
(format convertiru
retour às
)?Si les méthodes ci-dessus ne fonctionnent pas, vous pouvez également indiquer à Python d'ignorer les parties d'une chaîne qu'il ne peut pas convertir en utf-8:
Peut-être un peu exagéré, mais quand je travaille avec de l'ascii et unicode dans les mêmes fichiers, répéter de décodage peut être une douleur, c'est ce que j'utilise:
Si je vous comprends bien, vous avez une codé en utf-8 octets chaîne de caractères dans votre code.
De la conversion d'un octet-chaîne d'une chaîne unicode est connu que le décodage (unicode -> byte-chaîne est de l'encodage).
Vous le faire en utilisant le unicode fonction ou de la décoder méthode. Soit:
Ou:
Ajoutant la ligne suivante au début de votre .py fichier:
vous permet d'encoder les chaînes directement dans votre script, comme ceci:
from __future__ import unicode_literals
en haut ou de l'utilisationu''
préfixe. N'utilisez pas de caractères non-ascii dansbytes
littéraux. Pour obtenir octets utf-8, vous pouvezutf8bytes = unicode_text.encode('utf-8')
plus tard si c'est nécessaire.from __future__ import unicode_literals
m'aider à convertir une chaîne de caractères avec des caractères non ascii, utf-8?En Python 3.6, ils n'ont pas intégré dans unicode() la méthode.
Les chaînes sont déjà stockées au format unicode par défaut et aucune conversion n'est nécessaire. Exemple:
Traduire avec ord() et unichar().
Chaque char unicode ont un certain nombre associées, quelque chose comme un indice. Donc, Python ont quelques méthodes pour traduire entre un char et de son numéro. La baisse ñ exemple. J'espère que ça peut aider.