[python] entry accents...
Résolu
Todesfall
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un souci avec python. Lorsque je rentre un accent dans un entry et que je récupère la valeur il me met une erreur du type code ascii il me semble.
Comment faire pour palier ce problème ?
En début de programme j'ai :
# -*- coding: iso-8859-1 -*-
Si quelqu'un n'a pas compris je peux lui ré-expliquer, ya pas de souci.
Merci d'avance
J'ai un souci avec python. Lorsque je rentre un accent dans un entry et que je récupère la valeur il me met une erreur du type code ascii il me semble.
Comment faire pour palier ce problème ?
En début de programme j'ai :
# -*- coding: iso-8859-1 -*-
Si quelqu'un n'a pas compris je peux lui ré-expliquer, ya pas de souci.
Merci d'avance
A voir également:
- [python] entry accents...
- Citizen code python avis - Accueil - Outils
- \R python ✓ - Forum Python
- Lettres avec accents - Guide
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
11 réponses
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.
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
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.
# -*- 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...)