Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

accents français

3 réponses
Avatar
Jonathan Barnoud
Bonjour,

Dans l'exemple suivant :
*************************************
#_*_ coding:utf-8 _*_

from Tkinter import *
def test():
global t1
doc=open('ptj_test.txt', 'w')
doc.write(t1.get(0.1, END))
doc.close()
print t1.get(0.1, END)
rac=Tk()
t1 = Text(rac, height=3, width=20)
t1.pack()
Button(rac, text='Test', command=test).pack()
rac.mainloop()
*********************************
si je tape un teste sans accents dans la zone de texte, pas de problème
mais si je met des accents, le print se fait sans problème mais il
refuse d'écrite dans le document et me crache :

Exception in Tkinter callback
Traceback (most recent call last):
File
"/usr/src/build/394694-i386/install/usr/lib/python2.3/lib-tk/Tkinter.py",
line 1345, in __call__
return self.func(*args)
File "test.py", line 8, in test
doc.write(t1.get(0.1, END))
UnicodeEncodeError: 'ascii' codec can't encode characters in position
0-2: ordinal not in range(128)

Rien a faire, je comprend pas d'où ça vient.
Quelqu'un aurait-il une idée du pourquoi du problème ?

Jonathan Barnoud

3 réponses

Avatar
Yermat
Jonathan Barnoud wrote:
Bonjour,

Dans l'exemple suivant :
*************************************
#_*_ coding:utf-8 _*_

from Tkinter import *
def test():
global t1
doc=open('ptj_test.txt', 'w')
doc.write(t1.get(0.1, END))
doc.close()
print t1.get(0.1, END)
rac=Tk()
t1 = Text(rac, height=3, width )
t1.pack()
Button(rac, text='Test', command=test).pack()
rac.mainloop()
*********************************
si je tape un teste sans accents dans la zone de texte, pas de problème
mais si je met des accents, le print se fait sans problème mais il
refuse d'écrite dans le document et me crache :

Exception in Tkinter callback
Traceback (most recent call last):
File
"/usr/src/build/394694-i386/install/usr/lib/python2.3/lib-tk/Tkinter.py",
line 1345, in __call__
return self.func(*args)
File "test.py", line 8, in test
doc.write(t1.get(0.1, END))
UnicodeEncodeError: 'ascii' codec can't encode characters in position
0-2: ordinal not in range(128)

Rien a faire, je comprend pas d'où ça vient.
Quelqu'un aurait-il une idée du pourquoi du problème ?

Jonathan Barnoud


Les joies de l'unicode...
Vous essayer d'écrire une chaine unicode dans un fichier ascii donc
forcément ça passe pas ! Il faut donc soit que vous transformiez vous
même la ligne comme dans :
Button(rac, text='Test é'.encode('utf-8'), command=test).pack()

ou alors mieux :
import codecs
doc=codecs.open('ptj_test.txt', 'w', 'utf-8')

--
Cordialement,
Yermat

Avatar
Jerome Fuselier
Jonathan Barnoud wrote:
Bonjour,

Dans l'exemple suivant :
*************************************
#_*_ coding:utf-8 _*_

from Tkinter import *
def test():
global t1
doc=open('ptj_test.txt', 'w')
doc.write(t1.get(0.1, END))
doc.close()
print t1.get(0.1, END)
rac=Tk()
t1 = Text(rac, height=3, width )
t1.pack()
Button(rac, text='Test', command=test).pack()
rac.mainloop()
*********************************
si je tape un teste sans accents dans la zone de texte, pas de problème
mais si je met des accents, le print se fait sans problème mais il
refuse d'écrite dans le document et me crache :

Exception in Tkinter callback
Traceback (most recent call last):
File
"/usr/src/build/394694-i386/install/usr/lib/python2.3/lib-tk/Tkinter.py",
line 1345, in __call__
return self.func(*args)
File "test.py", line 8, in test
doc.write(t1.get(0.1, END))
UnicodeEncodeError: 'ascii' codec can't encode characters in position
0-2: ordinal not in range(128)

Rien a faire, je comprend pas d'où ça vient.
Quelqu'un aurait-il une idée du pourquoi du problème ?

Jonathan Barnoud


Tu peux essayer de remplacer ton open par

doc=codecs.open('ptj_test.txt', 'w', encoding='latin_1')

Avatar
Jonathan Barnoud
Yermat wrote:

ou alors mieux :
import codecs
doc=codecs.open('ptj_test.txt', 'w', 'utf-8')

ça marche nickel, merci


Jonathan Barnoud