data.decode('UTF8')
Par Florian Strzelecki -
Gérer du texte est parfois (souvent) un véritable casse-tête quand des problèmes d'encodage de caractères pointent le bout de leur nez. Alors, pour avoir perdu bien trop de temps, je m'écris un article "marque-page" pour me rappeler que, bordel, voilà comment récupérer les données d'un fichier en UTF-8, les traiter avec Markdown, puis écrire le tout dans un fichier.
import markdown f = open('fichier.txt', 'r') data = f.read() f.close() html = markdown.markdown(data.decode('UTF8')) h = open('fichier.html', 'w') h.write(html.encode('UTF8')) h.close()
L'idée, c'est de "décoder" la chaîne qui est à l'origine en UTF-8 vers de l'Unicode, puis la traiter comme je le souhaite (ici avec Markdown), puis de l'encoder en UTF-8 pour l'écrire dans un fichier. Voilà.
Simple, efficace, mais il faut y faire scrupuleusement attention, sous peine de se prendre ce genre d'erreur :
UnicodeEncodeError: 'ascii' codec can't encode character