J'ai un navigateur qui envoie des caractères utf-8 à mon serveur Python, mais lorsque je le récupère à partir de la chaîne de requête, l'encodage renvoyé par Python est ASCII. Comment puis-je convertir la chaîne simple en utf-8?
REMARQUE: La chaîne transmise depuis le Web est déjà encodée en UTF-8, je veux juste que Python la traite comme UTF-8 et non ASCII.
python
python-2.7
unicode
utf-8
Bin Chen
la source
la source
"some_string".encode('utf-8').decode('utf-8')
Réponses:
^ C'est la différence entre une chaîne d'octets (plain_string) et une chaîne unicode.
^ Conversion en Unicode et spécification de l'encodage.
la source
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 2: invalid start byte
J'obtiens l'erreur suivante: Voici mon code: ret = [] pour la ligne dans csvReader: cline = [] pour l'orme en ligne: unicodestr = unicode (elm, 'utf-8') cline.append (unicodestr) ret .append (cline)unicode()
n'existent pas.u
dans unstr
format (reconvertiru
verss
)?Si les méthodes ci-dessus ne fonctionnent pas, vous pouvez également dire à Python d'ignorer les parties d'une chaîne qu'il ne peut pas convertir en utf-8:
la source
Peut-être un peu exagéré, mais lorsque je travaille avec ascii et unicode dans les mêmes fichiers, répéter le décodage peut être pénible, c'est ce que j'utilise:
la source
Ajout de la ligne suivante en haut de votre fichier .py:
vous permet d'encoder des chaînes directement dans votre script, comme ceci:
la source
from __future__ import unicode_literals
en haut ou utilisez leu''
préfixe. N'utilisez pas de caractères non-ascii dans lesbytes
littéraux. Pour obtenir les octets utf-8, vous pourrezutf8bytes = unicode_text.encode('utf-8')
plus tard si nécessaire.from __future__ import unicode_literals
m'aidera à convertir une chaîne avec des caractères non-ascii en utf-8?Si je vous comprends bien, vous avez une chaîne d'octets encodée en utf-8 dans votre code.
La conversion d'une chaîne d'octets en chaîne unicode est appelée décodage (unicode -> chaîne d'octets est un codage).
Vous faites cela en utilisant la fonction unicode ou la méthode de décodage . Soit:
Ou:
la source
la source
En Python 3.6, ils n'ont pas de méthode unicode () intégrée. Les chaînes sont déjà stockées au format Unicode par défaut et aucune conversion n'est requise. Exemple:
la source
Traduire avec ord () et unichar (). Chaque caractère unicode a un nombre associé, quelque chose comme un index. Python a donc quelques méthodes pour traduire entre un caractère et son nombre. L'inconvénient est un exemple. J'espère que cela peut vous aider.
la source
Oui, vous pouvez ajouter
dans la première ligne de votre code source.
Vous pouvez lire plus de détails ici https://www.python.org/dev/peps/pep-0263/
la source