Bonjour,
Pour utiliser du Chinois dans la lecture de fichier sur Python :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 # -*- coding: utf-8 -*- with open("1300001717.txt", "rb") as f: print(f.read().decode('gb2312','ignore'))
Bonjour,
Pour utiliser du Chinois dans la lecture de fichier sur Python :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 # -*- coding: utf-8 -*- with open("1300001717.txt", "rb") as f: print(f.read().decode('gb2312','ignore'))
Normalement tu ne devrais pas avoir de problème pour lire du chinois avec cette version...
Essayes de forcer l'encodage en te mettant en mode binaire
Mais normalement il n'y a pas besoin de cet artifice avec python 3.x, l'unicode est supporté d'origine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 with open('monfichier.txt', 'rb') as f: content = f.read() # bytes print(content.decode('utf8')) # str
Avec decode j'ai une erreur :
print(contenu.decode('utf8'))
AttributeError: 'str' object has no attribute 'decode'
Et sinon quand je fais ce code suivant ca me mets pas les caracteres chinois mais ce que j'aiu deja decrit au dessus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fichier = open("test.txt", "r") contenu = fichier.read() contenu2 = contenu print(contenu) print(contenu.encode('utf8')) print(contenu2.encode('utf8').decode('utf8')) fichier.close()
J'ai pas mis le mode "r" mais le mode "rb".
Mouais j'ai un petit doute, essayes voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 with open("test.txt", encoding="latin-1") as f: print(f.read())
Dernière solution
EDIT: Peut-être faudra-t-il le mode 'rb' si cela ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 with open("test.txt") as f: print(f.read().decode('gb2312','ignore').encode('UTF-8'))
print(f.read().decode('gb2312','ignore').encode('UTF-8'))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 # -*- coding: utf-8 -*- with open("test.txt") as f: print(f.read().decode('gb2312','ignore').encode('UTF-8'))
AttributeError: 'str' object has no attribute 'decode'
Jai oublie de preciser que "rb" me donne des trucs du genre
xb0\x9d\x80:\xe4\xe5\x9b\
C'est normal ça te renvoie des bytes, mais pour avoir du type str, il faut utiliser la méthode decode...
Normalement, tu vas devrais pas utiliser cette manière de faire, python 3.x utilise l'unicode.
Genial merci bcp !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 # -*- coding: utf-8 -*- with open("1300001717.txt", "rb") as f: print(f.read().decode('gb2312','ignore'))
Ouais c'est la solution que j'ai proposé ICI.
Salut,
Pourquoi écrire f.read().decode('gb2312','ignore').encode('UTF-8') plutôt que f.read().decode('ascii','ignore').encode('UTF-8') ?
Dans les deux cas, on va obtenir un résultat non intègre - puisqu'on vire tout ce qui n'est pas "conforme" - et pas forcément utilisable.
- W
Partager