J'ai un problème de lecture d'un fichier txt à insérer dans la table mysql db, Té sniped de ce code:lettres latines avec aiguë: DjangoUnicodeDecodeError
fichiercontient en première ligne: « aclaración »
archivo = open('file.txt',"r")
for line in archivo.readlines():
....body = body + line
model = MyModel(body=body)
model.save()
i obtenir un DjangoUnicodeDecodeError:
codec 'utf8' ne peut pas décoder les octets en position 8: données non valides. Vous avez passé dans 'aclaraci \ xf3n' (type 'str') Indice d'erreur Unicode
La chaîne qui n'a pas pu être encodée/décodée était: araci n.
J'ai essayé de body.decode ('utf-8'), body.decode ('latin-1'), body.decode ('iso-8859-1') sans solution.
Pouvez-vous m'aider s'il vous plaît? Tout indice est apprécié :)
Merci Alex, répondre à votre question, ici:> shell manage.py Python 2.5.4 (InteractiveConsole) >>> a = 'a' >>> un '\ xa0' >>> a. décoder ('iso-8859-1'). encoder ('utf-8') '\ xc2 \ xa0' >>> test = unicode (a) Traceback (dernier appel en dernier): Fichier "" , ligne 1, dans UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xa0 en position 0: ordinal pas dans la plage (128) –
panchicore
Dans 'test = unicode (a)', vous utilisez implicitement le codec ascii, comme le message d'erreur vous le dit clairement, alors bien sûr, il échoue. Utilisez 'unicode (a, 'iso-8859-1')' si vous connaissez un encodé en ISO-8859-1. Si vous attribuez les résultats de la séquence de codage/décodage à une autre variable, disons b, 'unicode (b, 'utf-8')' fonctionnerait alors. Etc, etc. Peut-être que vous appelez simplement encoder et décoder de cette façon et cela et ne pas attribuer et ensuite utiliser leurs résultats ...?! Souvenez-vous que les chaînes sont immuables, donc les appels de méthode ne les CHANGEENT PAS: ils renvoient des résultats (attribuez-les et utilisez-les! -). –