Annuaire d'articles
raison
UnicodeDecodeError
Python a souvent ce problème entre les versions 2.x et 3.x à cause de l'incongruité de l'encodage des caractères .
tu avant str
Utilisez str.encode pour résoudre
string = u'anomaly'
print(string.encode('utf-8'))
# 'anomaly'
Référence de contenu plus spécifique : https://blog.csdn.net/qq_21153619/article/details/84841184
Scénario 1 Scénario sans cornichon
Dans les scénarios de décodage sans pickle, la fonction open n'utilise généralement pas bianry pour décoder les fichiers.Pour le moment, vous pouvez utiliser python 2.x pour changer l'encodage en utf-8 ou ISO-8859-1 lors de l'écriture de ce fichier.Il est recommandé que lors de l'écriture dans le fichier, veillez à encoder la chaîne avant de la sortir.
data # some data of str
f = open(file_path, 'w', encoding='utf-8')
for item in data:
f.write(item.encode('utf-8'))
f.close()
Utilisez ensuite python 3.x pour spécifier l'encodage à lire.
Scénario 2 scénario cornichon
Lorsque nous stockons des fichiers pickle, nous utilisons généralement le binaire pour le vidage, tout comme
data # some data of some kinds
pickle.dump(data, open(data_path, 'wb'))
À ce stade, si nous lisons selon la méthode de l'étape précédente, une erreur sera signalée, indiquant que lors de la lecture sous le principe du binaire, l'encodage ne peut pas être spécifié dans la fonction open.
Mauvaise façon:
pickle.load(data, open(date_path, 'rb', encoding='utf-8')) # 报错
La bonne manière:
spécifiez l'encodage à l'intérieur de la fonction pickle, pas à l'intérieur de la fonction open
pickle.load(data, open(data_path, 'rb'), encoding='latin1')
Référence : https://blog.csdn.net/wangleiwavesharp/article/details/106402165