7
votes

UNICODEDECODEError avec Django's Demande.files

J'ai le code suivant dans l'affichage Call ..

UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 7470: ordinal not in range(128)


0 commentaires

4 Réponses :


4
votes

Vous êtes également ajouté F.Read () directement à la chaîne Unicode, sans le décoder, si les données que vous lisez à partir du fichier sont codées UTF-8 Utilisez UTF-8, sinon utilisez tout ce qui est codé.

< Fort> décodez d'abord, puis appendez-le au corps par exemple xxx


0 commentaires

4
votes

La réponse d'Anurag est correcte. Cependant, un autre problème ici est que vous ne pouvez pas savoir le codage des fichiers que les utilisateurs téléchargent. Il peut être utile de boucler sur un tuple des plus courants que vous obtenez la bonne:

encodings = ('windows-xxx', 'iso-yyy', 'utf-8',)
for e in encodings:
    try:
        data = f.read().decode(e)
        break
    except UnicodeDecodeError:
        pass


0 commentaires

3
votes

Si vous ne contrôlez pas le codage de fichier pour les fichiers pouvant être téléchargés, vous pouvez deviner ce que l'encodage d'un fichier consiste à utiliser le Détecteur de codage universel module Chardet .


0 commentaires