[python] entry accents...
Résolu/Fermé
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
-
24 mai 2007 à 10:19
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 25 mai 2007 à 10:22
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 25 mai 2007 à 10:22
A voir également:
- [python] entry accents...
- Citizen code python - Guide
- Data entry c'est quoi - Forum Logiciels
- Geometry dash python ✓ - Forum Python
- No bag entry - Forum MacOS
- Lancer script python linux - Forum Ubuntu
11 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
24 mai 2007 à 17:11
24 mai 2007 à 17:11
fd.write('<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit)
Ah !
Voilà le problème.
En quel encodage est ton fichier ?
ISO-8859-1 (jeu de caractère Windows), UTF-8, autre ?
Il faut impérativement encoder les chaînes.
Et tu devrais mettre toutes tes chaines en Unicode.
Ce qui donne:
Si les mots encodage et jeu de caractère ne te parlent pas, il est impératif de lire ceci:
https://sebsauvage.net/python/charsets_et_encoding.html
C'est la source de tes problèmes.
Ah !
Voilà le problème.
En quel encodage est ton fichier ?
ISO-8859-1 (jeu de caractère Windows), UTF-8, autre ?
Il faut impérativement encoder les chaînes.
Et tu devrais mettre toutes tes chaines en Unicode.
Ce qui donne:
machaine = u'<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit fd.write(machaine.encode('utf-8')
Si les mots encodage et jeu de caractère ne te parlent pas, il est impératif de lire ceci:
https://sebsauvage.net/python/charsets_et_encoding.html
C'est la source de tes problèmes.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
24 mai 2007 à 14:34
24 mai 2007 à 14:34
Tu utilises quoi comme tookit graphique ?
tkinter ?
wxWidgets ?
GTK ?
autre ?
Sinon, un article intéressant à lire: https://sebsauvage.net/python/charsets_et_encoding.html
tkinter ?
wxWidgets ?
GTK ?
autre ?
Sinon, un article intéressant à lire: https://sebsauvage.net/python/charsets_et_encoding.html
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
24 mai 2007 à 15:19
24 mai 2007 à 15:19
J'utilise Tkinter.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
24 mai 2007 à 16:07
24 mai 2007 à 16:07
Peux-tu faire un copier-coller du message d'erreur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
24 mai 2007 à 16:30
24 mai 2007 à 16:30
Oui :
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 8: ordinal not in range(128)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 8: ordinal not in range(128)
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
24 mai 2007 à 16:32
24 mai 2007 à 16:32
complet, avec les lignes de code et la pile d'appel, tel qu'à l'écran, s'il-te-plaît.
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
24 mai 2007 à 17:07
24 mai 2007 à 17:07
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\prog\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "D:\Data\Base_xml_python\dossier_machine.py", line 2912, in nouveau_Dossier
liste_equipement()
File "D:\Data\Base_xml_python\dossier_machine.py", line 222, in liste_equipement
fd.write('<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 6: ordinal not in range(128)
Traceback (most recent call last):
File "C:\prog\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "D:\Data\Base_xml_python\dossier_machine.py", line 2912, in nouveau_Dossier
liste_equipement()
File "D:\Data\Base_xml_python\dossier_machine.py", line 222, in liste_equipement
fd.write('<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 6: ordinal not in range(128)
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
25 mai 2007 à 09:05
25 mai 2007 à 09:05
en # -*- coding: iso-8859-1 -*-
on ne pas mettre quelque chose comme si dessus pour qu'il prenne les accents.
on ne pas mettre quelque chose comme si dessus pour qu'il prenne les accents.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
25 mai 2007 à 09:13
25 mai 2007 à 09:13
# -*- coding: iso-8859-1 -*-
sert seulement à indiquer l'encodage de ton source.
Il faut indiquer à Python quel est l'encodage:
- des fichiers que tu lis
- des fichiers que tu écris
(Python ne peut pas le deviner, et par défaut il considèrera que c'est de l'ascii. Il refusera donc d'écrire "é" dedans, car "é" ne fait pas partie du code ascii, d'où l'erreur 'ascii' codec can't decode byte 0xe9...)
La règle c'est :
- toujours indiquer l'encodage du source .py (ce que tu as fait, c'est bien)
- toujours travailler en interne dans ton programme avec des chaînes unicode (u"bébé" au lieu de "bébé")
- quand on échange avec le monde extérieur (fichiers, réseau...) il faut encoder/décoder vers/depuis les bons charsets (ascii, iso-8859-1, utf-8...)
sert seulement à indiquer l'encodage de ton source.
Il faut indiquer à Python quel est l'encodage:
- des fichiers que tu lis
- des fichiers que tu écris
(Python ne peut pas le deviner, et par défaut il considèrera que c'est de l'ascii. Il refusera donc d'écrire "é" dedans, car "é" ne fait pas partie du code ascii, d'où l'erreur 'ascii' codec can't decode byte 0xe9...)
La règle c'est :
- toujours indiquer l'encodage du source .py (ce que tu as fait, c'est bien)
- toujours travailler en interne dans ton programme avec des chaînes unicode (u"bébé" au lieu de "bébé")
- quand on échange avec le monde extérieur (fichiers, réseau...) il faut encoder/décoder vers/depuis les bons charsets (ascii, iso-8859-1, utf-8...)
Todesfall
Messages postés
70
Date d'inscription
lundi 30 avril 2007
Statut
Membre
Dernière intervention
17 septembre 2014
25 mai 2007 à 09:14
25 mai 2007 à 09:14
merci
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
25 mai 2007 à 10:22
25 mai 2007 à 10:22
De rien !