403 votes

UnicodeDecodeError, octet de continuation invalide

Pourquoi l'élément ci-dessous est-il défaillant ? Pourquoi cela réussit-il avec le codec "latin-1" ?

o = "a test of \xe9 char" #I want this to remain a string as this is what I am receiving
v = o.decode("utf-8")

Ce qui a pour conséquence :

 Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
 File "C:\Python27\lib\encodings\utf_8.py",
 line 16, in decode
     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:
 'utf8' codec can't decode byte 0xe9 in position 10: invalid continuation byte

20voto

Utilisez ceci, s'il montre l'erreur de UTF-8

pd.read_csv('File_name.csv',encoding='latin-1')

14voto

surya Points 121

L'erreur de code utf-8 survient généralement lorsque la plage des valeurs numériques dépasse 0 à 127.

la raison de lever cette exception est :

1)Si le point de code est < 128, chaque octet est identique à la valeur du point de code. 2) Si le point de code est égal ou supérieur à 128, la chaîne Unicode ne peut pas être représentée dans cet encodage. (Python lève une exception UnicodeEncodeError dans ce cas).

Pour surmonter ce problème, nous disposons d'un ensemble de codages, le plus largement utilisé étant le "Latin-1, également connu sous le nom d'ISO-8859-1".

Ainsi, les points Unicode 0-255 de l'ISO-8859-1 sont identiques aux valeurs Latin-1, de sorte que la conversion vers cet encodage nécessite simplement de convertir les points de code en valeurs d'octets ; si un point de code supérieur à 255 est rencontré, la chaîne ne peut pas être encodée en Latin-1

lorsque cette exception se produit lorsque vous essayez de charger un ensemble de données ,essayez d'utiliser ce format

df=pd.read_csv("top50.csv",encoding='ISO-8859-1')

Ajoutez la technique d'encodage à la fin de la syntaxe qui accepte ensuite de charger l'ensemble de données.

0 votes

Bonjour et bienvenue à SO ! S'il vous plaît modifier votre réponse pour vous assurer qu'elle améliore les autres réponses déjà présentes dans cette question.

10voto

Aditya Aggarwal Points 90

Ce type d'erreur survient lorsque vous saisissez un fichier ou des données particulières dans pandas, par exemple : -.

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv)

Ensuite, l'erreur s'affiche comme ceci :- UnicodeDecodeError : Le codec 'utf-8' ne peut pas décoder l'octet 0xf4 en position 1 : octet de continuation invalide.

Ainsi, pour éviter ce type d'erreur, on peut le supprimer en ajoutant un argument

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv', encoding='ISO-8859-1')

0 votes

Veuillez formater votre code correctement, cliquez ici pour savoir comment .

9voto

Alon Gouldman Points 363

Cela m'est arrivé aussi, alors que je lisais un texte contenant de l'hébreu d'une .txt fichier.

J'ai cliqué : file -> save as et j'ai enregistré ce fichier comme un UTF-8 codage

1voto

Martin Taco Points 21

Dans ce cas, j'ai essayé d'exécuter un .py qui active un path/file.sql.

Ma solution a été de modifier la codification du fichier.sql en "UTF-8 sans BOM" et ça marche !

Vous pouvez le faire avec Notepad++.

Je vais laisser une partie de mon code.

/ Code /

con=psycopg2.connect(host = sys.argv[1], port = sys.argv[2],dbname = sys.argv[3],user = sys.argv[4], password = sys.argv[5])

curseur = con.cursor() sqlfile = open(path, 'r')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X