Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Write in a file with Python 3 & unicode

Here is my code:

import codecs
filename = "worst.txt"
file = open(filename, "r",encoding='utf-8')
lines = file.readlines()
texte = ""
for line in lines:
    print(line)
    texte += line
file.close()
print(texte)
texte = texte.split(";")
print(texte)
filename = "oudean.html"



file = open(filename, "w",encoding='utf-8')



file.write("<html><body>\r\n")
for t in texte :
        print(t)
        file.write("""<img src="ouedan.jpg"><br>\r\n""")
        file.write("""Une déclaration à faire ?<br>Besoin d'encouragements?<br>Notre brigade d'élite beat agent est là pour vous aider.<br>Faites appel à nous en appelant le  06 et nous accourrons vous encourager dans l'instant.<br>N hésitez pas.<br>Et pour vous aider durant cette soirée, voilà une accroche a tester, succès garanti :<br>%s<br><br><br><br><br><br><br><br>"""%t)
file.write("</body></html>\r\n")
file.close()

But I gives me:

Une déclaration à faire ? Besoin d'encouragements? Notre brigade d'élite beat agent est là pour vous aider. Faites appel à nous en appelant le 06 et nous accourrons vous encourager dans l'instant. N hésitez pas. Et pour vous aider durant cette soirée, voilà une accroche a tester, succès garanti :

So how to write in a file with unicode string?

like image 612
Bussiere Avatar asked Feb 11 '11 14:02

Bussiere


1 Answers

Your symptoms look like regular a "UTF-8 as latin-1" problem.

Have you checked what encoding is used on the software that you are using to view that file? I'd say that the problem is not necessarily in your python code but in the viewer.

If you create a file with your example text Une déclaration à faire... using UTF-8 encoding and then read that file interpreting the contents using encoding ISO-8859-1 or windows-1252, then the result is shown as the output you described: Une déclaration à faire....

Also, in python 3 the default source encoding is UTF-8. http://www.python.org/dev/peps/pep-3120/

like image 88
jasso Avatar answered Oct 03 '22 20:10

jasso