Super, ça marche à nouveau. Comme je suis hyper joueur, je modifie
l'encodage de mon terminal Gnome, et je le passe en iso8859-15.
$ ./mon_test.py création
Traceback (most recent call last):
File "./mon_test.py", line 5, in <module>
print re.match("\w+", sys.argv[1].decode("utf-8"), re.UNICODE).group(0)
File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 2:
invalid continuation byte
$
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une
donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou
de différentes méthodes du module locale. Dans tous les cas, je récupère
soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je
fournis.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Claessens
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question : c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles ne sont pas fiables. Je suppose que ça se base sur le fait qu'en Français le code non-ascii qui arrive le plus souvent doit être le «é», ou ce genre de trucs.
J'espère que quelqu'un va me contredire ;)
bonne journée Laurent
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question :
c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles
ne sont pas fiables. Je suppose que ça se base sur le fait qu'en
Français le code non-ascii qui arrive le plus souvent doit être le «é»,
ou ce genre de trucs.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question : c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles ne sont pas fiables. Je suppose que ça se base sur le fait qu'en Français le code non-ascii qui arrive le plus souvent doit être le «é», ou ce genre de trucs.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question : c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles ne sont pas fiables. Je suppose que ça se base sur le fait qu'en Français le code non-ascii qui arrive le plus souvent doit être le «é», ou ce genre de trucs.
J'espère que quelqu'un va me contredire ;)
bonne journée Laurent
Sac-à-papier, c'est bien ce que je craignais.
Merci tout de même,
Guillaume
Le 29/06/2011 11:46, Laurent Claessens a écrit :
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question :
c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles
ne sont pas fiables. Je suppose que ça se base sur le fait qu'en
Français le code non-ascii qui arrive le plus souvent doit être le «é»,
ou ce genre de trucs.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Pour autant que je sache, la réponse est aussi simple que la question : c'est impossible.
Il existe des méthodes heuristiques (que je ne connais pas), mais elles ne sont pas fiables. Je suppose que ça se base sur le fait qu'en Français le code non-ascii qui arrive le plus souvent doit être le «é», ou ce genre de trucs.
J'espère que quelqu'un va me contredire ;)
bonne journée Laurent
Sac-à-papier, c'est bien ce que je craignais.
Merci tout de même,
Guillaume
Web Dreamer
Guillaume Lemaître a écrit ce mardi 28 juin 2011 20:14 dans <4e0a1a08$0$29534$ :
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ? Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou de différentes méthodes du module locale. Dans tous les cas, je récupère soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je fournis.
Très simplement avec le module chardet http://pypi.python.org/pypi/chardet/ http://chardet.feedparser.org/ (easy_install chardet devrait l'installer)
Donc tu peux utiliser: encoding = chardet.detect(my_string)['encoding']
Et le tour est joué.
-- Web Dreamer
Guillaume Lemaître a écrit ce mardi 28 juin 2011 20:14 dans
<4e0a1a08$0$29534$426a74cc@news.free.fr> :
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une
donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou
de différentes méthodes du module locale. Dans tous les cas, je récupère
soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je
fournis.
Très simplement avec le module chardet
http://pypi.python.org/pypi/chardet/
http://chardet.feedparser.org/
(easy_install chardet devrait l'installer)
Guillaume Lemaître a écrit ce mardi 28 juin 2011 20:14 dans <4e0a1a08$0$29534$ :
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ? Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou de différentes méthodes du module locale. Dans tous les cas, je récupère soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je fournis.
Très simplement avec le module chardet http://pypi.python.org/pypi/chardet/ http://chardet.feedparser.org/ (easy_install chardet devrait l'installer)
Donc tu peux utiliser: encoding = chardet.detect(my_string)['encoding']
Et le tour est joué.
-- Web Dreamer
News123
Est-ce-que tu as un peut plus de context???
Ton text a analyser vient d'ou?
- HTML / XML devrai avoir les entetes qui decrivent l'encodage. - email: peut-etre dans les entetes, mais je ne sais pas. - console: locales / le variales d'env - fichier inconnues sur ta disque: faut prendre les algo's heuristiques
On 06/28/2011 08:14 PM, Guillaume Lemaître wrote:
Bonjour,
Mon problème initial est de pouvoir faire tourner une expression régulière du genre "w+" sur une entrée utilisateur avec Python 2.4.3 (au minimum)
C'est donc fort logiquement que j'écris (dans mon_test.py) :
import sys, re
print re.match("w+", sys.argv[1]).group(0)
$ ./mon_test.py creation creation $
Super, ça a l'air de marcher. Mais avec l'entrée suivante :
$ ./mon_test.py création cr $
C'est déjà moins un succès. Du coup, je me documente sur internet, et je modifie la commande principale par :
Super, ça marche à nouveau. Comme je suis hyper joueur, je modifie l'encodage de mon terminal Gnome, et je le passe en iso8859-15.
$ ./mon_test.py création Traceback (most recent call last): File "./mon_test.py", line 5, in <module> print re.match("w+", sys.argv[1].decode("utf-8"), re.UNICODE).group(0) File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 2: invalid continuation byte $
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ? Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou de différentes méthodes du module locale. Dans tous les cas, je récupère soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je fournis.
D'avance merci pour vos éclaircissements,
Guillaume
Est-ce-que tu as un peut plus de context???
Ton text a analyser vient d'ou?
- HTML / XML devrai avoir les entetes qui decrivent l'encodage.
- email: peut-etre dans les entetes, mais je ne sais pas.
- console: locales / le variales d'env
- fichier inconnues sur ta disque: faut prendre les algo's heuristiques
On 06/28/2011 08:14 PM, Guillaume Lemaître wrote:
Bonjour,
Mon problème initial est de pouvoir faire tourner une expression
régulière du genre "w+" sur une entrée utilisateur avec Python 2.4.3
(au minimum)
C'est donc fort logiquement que j'écris (dans mon_test.py) :
import sys, re
print re.match("w+", sys.argv[1]).group(0)
$ ./mon_test.py creation
creation
$
Super, ça a l'air de marcher. Mais avec l'entrée suivante :
$ ./mon_test.py création
cr
$
C'est déjà moins un succès. Du coup, je me documente sur internet, et je
modifie la commande principale par :
Super, ça marche à nouveau. Comme je suis hyper joueur, je modifie
l'encodage de mon terminal Gnome, et je le passe en iso8859-15.
$ ./mon_test.py création
Traceback (most recent call last):
File "./mon_test.py", line 5, in <module>
print re.match("w+", sys.argv[1].decode("utf-8"), re.UNICODE).group(0)
File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 2:
invalid continuation byte
$
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une
donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ?
Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou
de différentes méthodes du module locale. Dans tous les cas, je récupère
soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je
fournis.
- HTML / XML devrai avoir les entetes qui decrivent l'encodage. - email: peut-etre dans les entetes, mais je ne sais pas. - console: locales / le variales d'env - fichier inconnues sur ta disque: faut prendre les algo's heuristiques
On 06/28/2011 08:14 PM, Guillaume Lemaître wrote:
Bonjour,
Mon problème initial est de pouvoir faire tourner une expression régulière du genre "w+" sur une entrée utilisateur avec Python 2.4.3 (au minimum)
C'est donc fort logiquement que j'écris (dans mon_test.py) :
import sys, re
print re.match("w+", sys.argv[1]).group(0)
$ ./mon_test.py creation creation $
Super, ça a l'air de marcher. Mais avec l'entrée suivante :
$ ./mon_test.py création cr $
C'est déjà moins un succès. Du coup, je me documente sur internet, et je modifie la commande principale par :
Super, ça marche à nouveau. Comme je suis hyper joueur, je modifie l'encodage de mon terminal Gnome, et je le passe en iso8859-15.
$ ./mon_test.py création Traceback (most recent call last): File "./mon_test.py", line 5, in <module> print re.match("w+", sys.argv[1].decode("utf-8"), re.UNICODE).group(0) File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 2: invalid continuation byte $
Ce n'est pas tant que je ne m'y attendais pas. J'essaie de décoder une donnée supposée être de l'utf-8 alors que c'est de l'iso8859-15.
Ma question est très simple : comment détecter l'encodage de l'entrée ? Toutes les aides que j'ai vu sur l'Internet par de sys.stdin.encoding ou de différentes méthodes du module locale. Dans tous les cas, je récupère soit "ascii", soit "utf-8" comme encodage, et ce n'est pas ce que je fournis.