Comments on: L’encoding en Python, une bonne fois pour toute http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-164415 Wed, 16 Sep 2015 06:19:35 +0000 http://sametmax.com/?p=5824#comment-164415 ASCII et UTF8 sont tous les deux des jeux de caractères (caracter sets). L’encodage (encoding) est le processus qui transforme un jeu de caractères en un autre. Ppour cette raison, on fait , comme dans cet article, souvent l’abus de langage en parlant d'”encoding ASCII” ou “encoding UTF8″ alors qu’on devrait dire “charset ASCII” et “charset UTF8″.

Comme les jeux de caractères ne sont pas équivalent, l’encoding en Python se fait par une forme intermédiaire, vers laquelle on decode() et depuis laquelle on encode(), ce qui permet de facilement identifier quand le processus échoue : au niveau du charset de départ ou de celui d’arrivée. Cela permet aussi d’isoler le texte comme un type à part en Python 3 : str est considéré comme du texte pur, tandis que tout texte encodé est sous forme de bytes.

En vérité, str est implémenté en utilisant utf8. Mais on a pas besoin de le savoir, et cela peut changer. C’est juste une API pour donner :

  • une abstraction du texte. Le jour où le texte évolue, on garde la même API et on peut changer l’implémentation.
  • de bonnes habitudes sur le mécanisme d’encodage/décodage.
  • un débuggage plus facile avec des erreurs très précises et des choix explicites sur leurs traitements.
]]>
By: Eildosa http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-164405 Tue, 15 Sep 2015 11:34:13 +0000 http://sametmax.com/?p=5824#comment-164405 Bon je croyais avoir tous compris mais je tombe sur cet article.

Pourquoi ASCII est dans la liste des encodage alors que c’est suposé etre un jeux de caractère? (qui pourrais etre encodé en utf-8 par exemple)

]]>
By: Max http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-163842 Thu, 13 Aug 2015 18:11:33 +0000 http://sametmax.com/?p=5824#comment-163842 Salut,

Tu devrais poser ta question sur http://indexerror.net, tu auras plus de chance d’avoir une réponse et ça pourra servir à d’autres.

]]>
By: Gwenmael http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-163837 Thu, 13 Aug 2015 10:15:48 +0000 http://sametmax.com/?p=5824#comment-163837 Bonjour,

Pouvez vous m’expliquer pourquoi j’obteint systèmatiquement une erreur ? faut-il que j’importe une bibliotèque particulière ?

IDLE 2.6.5 ==== No Subprocess ====

coding: utf8

une_chaine = ‘Chaîne’

type(une_chaine)

une_chaine = une_chaine.decode(‘utf8′)

Traceback (most recent call last):

File “<pyshell#4>”, line 1, in

une_chaine = une_chaine.decode(‘utf8′)

File “C:\ESRI\Python26\ArcGIS10.0\lib\encodings\utf_8.py”, line 16, in decode

return codecs.utf_8_decode(input, errors, True)

UnicodeDecodeError: ‘utf8′ codec can’t decode bytes in position 3-5: invalid data

]]>
By: Drico http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-162445 Mon, 22 Jun 2015 19:32:46 +0000 http://sametmax.com/?p=5824#comment-162445 J’adore le thon employé sur ce site (c’est pas une faute au niveau cul ;-)))

Dans le genre branlette, je suis tombé sur (je parle d’accent en l’occurrence)

sur la différence entre les accents composés et les accents décomposés (même moi je n’y ai pas cru)

Genre un ë et un ë voire un è et un è, ça saute pas à l’œil mais il y’a plusieurs manières de le faire, vu le niveau

des agitateurs je me dis, et vu l’article que je viens de lire (c’est bon les gars, respect :-))

Si ça continue je file élever des chèvres dans le Larzac ;-)

(et comme disais @Coluche il n’y a pas de meeeeehhhhh)

]]>
By: Fred http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-160449 Fri, 08 May 2015 08:54:53 +0000 http://sametmax.com/?p=5824#comment-160449 Oh *;:@\#% de *;:@\#% ! L’article que je cherchais depuis 2~3 ans !

Une nouvelle ère s’ouvre pour moi désormais.

Merci

“Je sais une chose : c’est que j’étais aveugle, maintenant je vois” Jean IX.25

]]>
By: Sam http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-157678 Sat, 14 Mar 2015 08:57:12 +0000 http://sametmax.com/?p=5824#comment-157678 Hum, normalement ce sont des alias, et les deux marchent sur ma machine. Une spécificité windows ? A creuser.

]]>
By: Julian http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-157666 Fri, 13 Mar 2015 23:44:51 +0000 http://sametmax.com/?p=5824#comment-157666 Salut et merci pour l’article!

J’ai relevé une mini erreur pour la déclaration d’encoding du fichier : # -- coding: utf8 --

Après essai python2.7 retourne une erreur car c’est : # -- coding: utf-8 --

C’est tout, simple correction de mini coquille :)

Good night

]]>
By: TurtleCrazy http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-157359 Fri, 06 Mar 2015 14:27:48 +0000 http://sametmax.com/?p=5824#comment-157359 Il faudrait toutefois clarifier ce que demande python3, parce que dire que c’est de l’ Unicode par défaut n’est pas suffisant.

Unicode est un standard et une norme. C’est tout.

UTF décrit une “transformation” qui répond au standard Unicode et UTF-8 en est le pendant codé sur 8bits.

Par contre, préfixer les chaines avec un “u” correspond en général à déclarer une chaine de caractères codée en UTF-8.

Donc quel est l’encodage par défaut d’un compilateur python3 ? Sachant que dans le monde Windows, le terme ‘Unicode’ est mal employé pour désigner de l’UTF-16(*) alors que dans le monde Unix, il est tout aussi mal employé pour désigner de l’ UTF-8 …

D’autant que le compilateur ou l’interpréteur peut lire un fichier dans un encodage et en utiliser un autre en interne (un pratique courante est de lire de l’utf-8 ou du latin-1 par défaut – voire exclusivement- et de stocker les chaines en UTF-16 )

Ce qui d’ailleurs enfonce le clou pour affirmer que l’encodage doit être précisé et ne doit jamais être “supposé” par défaut…

(*): pire encore, il y a deux UTF-16 (selon l’ endianess) et je ne sais pas lequel est utilisé en interne sous Windows.

]]>
By: dacrovinunghi http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/#comment-156081 Sat, 14 Feb 2015 21:24:19 +0000 http://sametmax.com/?p=5824#comment-156081 putain merci !

]]>