ascii codec cant decode byte 0xe9
J'ai fait quelques recherches et vu des solutions, mais aucune n'a fonctionné pour moi.
Python - 'ascii' codec ne peut pas décoder les octets
Cela n'a pas fonctionné pour moi. Et je sais que le 0xe9 est le "é". Mais je n'arrive toujours pas à comprendre comment obtenir ce travail, voici mon code
output_lines = ['<menu>', '<day name="monday">', '<meal name="BREAKFAST">', '<counter name="Entreé">', '<dish>', '<name icon1="Vegan" icon2="Mindful Item">', 'Cream of Wheat (Farina)','</name>', '</dish>', '</counter >', '</meal >', '</day >', '</menu >']
output_string = '\n'.join([line.encode("utf-8") for line in output_lines])
Et cela me donner l'erreur ascii codec cant decode byte 0xe9
Et j'ai essayé de décodage, j'ai essayé de remplacer les "é", mais n'arrive pas à obtenir que le travail soit.
L'exemple de code n'est pas valide et ne pas reproduire le problème;
désolé de ne pas montrer qu'il était plein dans mon exemple de code, mais il est rempli. J'ajouterai que, à la question
ce n'est pas encore votre
oui mais mais
Vos données sont déjà codé, pourquoi vous sentez-vous le besoin d'encoder à nouveau?
output_lines
est vide, donc la boucle ne font rien. Votre erreur vous indique que vous avez un décodage erreur lors de l'encodage, cela indique généralement que vous essayez de coder les données déjà codé.désolé de ne pas montrer qu'il était plein dans mon exemple de code, mais il est rempli. J'ajouterai que, à la question
ce n'est pas encore votre
output_lines
... sûrement ... pouvez-vous print output_lines
juste avant que vous essayez de créer output_string
oui mais mais
output_lines
est doit plus si je l'ai raccourcie, elleVos données sont déjà codé, pourquoi vous sentez-vous le besoin d'encoder à nouveau?
OriginalL'auteur iqueqiorio | 2015-03-09
Vous devez vous connecter pour publier un commentaire.
Vous encodez bytestrings:
Python est d'essayer d'être utile, vous ne pouvez encoder un Unicode chaîne d'octets, de sorte que pour coder en Python première implictly décode, en utilisant le codage par défaut.
La solution est de pas coder de données qui est déjà codé, ou d'abord décoder à l'aide d'un codec approprié, avant d'essayer de coder de nouveau, si les données ont été encodées à un codec différent de ce que vous avez besoin.
Si vous avez un mélange d'unicode et bytestring valeurs, décoder juste le bytestrings ou encoder uniquement les valeurs unicode; essayez d'éviter de mélanger les types. La suite décode les chaînes d'octets unicode première:
et Martijn quand je l'ai changer pour
output_string = '\n'.join([line for line in output_lines])
j'obtiens toujours la même erreur?avez-vous un mixer de l'Unicode et les chaînes d'octets dans votre liste?
ou cp1252; ni fail, mais ne peuvent pas produire lisible de sortie si c'est le bon codec.
ensuite, le serveur web peut vous ai fourni avec le codec ou le format XML lui-même pourrait avoir inclus le codec dans les métadonnées.
OriginalL'auteur Martijn Pieters
Un exemple simple, le problème est:
\xe9
n'est pas un caractère ascii qui signifie que votre chaîne est déjà codé. Vous avez besoin de le décoder en python unicode et puis l'encoder à nouveau dans le format de sérialisation vous le souhaitez.Car je ne sais pas où en est votre chaîne est venu, j'ai juste jeté un coup d'oeil à la python codecs, a remarqué quelque chose d'Europe de l'Ouest et a donné un rendez-vous à:
Vous aurez la meilleure chance si vous savez exactement ce qui l'encodage du fichier est venu.
OriginalL'auteur tdelaney
encode
= tourner une chaîne unicode en une bytestringdecode
= tourner un bytestring en unicodepuisque vous avez déjà une bytestring vous avez besoin de décoder pour en faire un unicode exemple (en supposant que c'est réellement ce que vous essayez de le faire)
OriginalL'auteur Joran Beasley
Basé sur ce que vous voulez faire avec vos lignes, vous pouvez faire différents types de travail ici, si vous voulez juste pour imprimer en consul que normalement les consuls utilisation
utf8
de l'encodage vous n'avez pas besoin de le faire par vous-même que le format de votre chaîne n'est pasunicode
:Mais si vous voulez écrire dans le fichier, vous pouvez utiliser
codecs
module:"\n".join(output_lines)
Ouais! désolé je m'ennuie de votre réponse!
OriginalL'auteur Kasrâmvd