Bonjour,
Pour utiliser du Chinois dans la lecture de fichier sur Python :
Code:
1
2
3 # -*- coding: utf-8 -*- with open("1300001717.txt", "rb") as f: print(f.read().decode('gb2312','ignore'))
Version imprimable
Bonjour,
Pour utiliser du Chinois dans la lecture de fichier sur Python :
Code:
1
2
3 # -*- coding: utf-8 -*- with open("1300001717.txt", "rb") as f: print(f.read().decode('gb2312','ignore'))
Quelle version python as-tu ?
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:
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:
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:
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:
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:
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'
Voir mon edit du topic ci-dessus
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:
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