Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
encodage [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


encodage

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
encodage [2009/08/17 09:13]
tyrtamos
encodage [2009/08/31 23:20]
tyrtamos
Ligne 38: Ligne 38:
  
 \\ \\
-Mais maintenant, comment faire pour que les même programmes puissent, sans changer d'encodage de caractères, être utilisés en Grèce, en Inde, en Russie, en Chine, etc... Ceci d'autant plus qu'avec Internet, les échanges sont devenus quotidiens, et rien ne doit vous empêcher de converser par mail avec des chinois ou des russes. La multiplicité des caractères exclut qu'on reste à l'intérieur des octets (0 à 255): alors, comment on fait? **On invente l'UNICODE!** Voir [[http://fr.wikipedia.org/wiki/Unicode]].+Mais maintenant, comment faire pour que les mêmes programmes puissent, sans changer d'encodage de caractères, être utilisés en Grèce, en Inde, en Russie, en Chine, etc... Ceci d'autant plus qu'avec Internet, les échanges sont devenus quotidiens, et rien ne doit vous empêcher de converser par mail avec des chinois ou des russes. La multiplicité des caractères exclut qu'on reste à l'intérieur des octets (0 à 255): alors, comment on fait? **On invente l'UNICODE!** Voir [[http://fr.wikipedia.org/wiki/Unicode]].
  
 Il y a en fait plusieurs types d'unicode: UCS-2, UTF-8, UTF-16, UTF-32, ... Il y a en fait plusieurs types d'unicode: UCS-2, UTF-8, UTF-16, UTF-32, ...
Ligne 47: Ligne 47:
   * **UTF-8** utilise de 1 à 4 octets par caractère. L'avantage est que les caractères codés en 1 seul octet de 0 à 127 sont sensiblement les mêmes que dans l'ASCII.    * **UTF-8** utilise de 1 à 4 octets par caractère. L'avantage est que les caractères codés en 1 seul octet de 0 à 127 sont sensiblement les mêmes que dans l'ASCII. 
   * **UTF-16** utilise 2 octets par caractères (plus si nécessaire pour des cas spéciaux et rares)   * **UTF-16** utilise 2 octets par caractères (plus si nécessaire pour des cas spéciaux et rares)
 +  * **UTF-32** plus rare, utilise 4 octets par caractères
  
 ===== Généralités sur l'encodage des caractères dans Python ===== ===== Généralités sur l'encodage des caractères dans Python =====
  
-Avec Python 2.6, on peut toujours travailler avec des codages sur un octets, par exemple avec l'iso-8859-1, mais on va de plus en plus travailler en Unicode. Et ceci, surtout si on travaille en multiplateforme et en multilingue. En ce qui me concerne, comme je fais du développement windows-linux, je suis obligé de travailler le plus souvent en utf-8 qui est l'encodage par défaut des linux modernes. +Avec Python 2.6, on peut toujours travailler avec des codages sur un octets, par exemple avec l'iso-8859-1/latin-1 (ou cp1252 sous Windows), mais on va de plus en plus travailler en Unicode. Et ceci, surtout si on travaille en multiplateforme et en multilingue. En ce qui me concerne, comme je fais le plus souvent du développement windows-linux, je suis obligé de travailler le plus souvent en utf-8, y compris pour les codes sources, qui est l'encodage par défaut des Linux modernes. 
  
 Les codages utilisables par Python sont ici: [[http://docs.python.org/library/codecs.html#standard-encodings]] Les codages utilisables par Python sont ici: [[http://docs.python.org/library/codecs.html#standard-encodings]]
Ligne 79: Ligne 80:
   * une table des caractères (ça existe sous Windows et sous Linux)   * une table des caractères (ça existe sous Windows et sous Linux)
  
-===== Entrée/Traitement/sortie de chaines de caractères =====+En ce qui concerne le développement multiplateforme sous Windows, la 1ère difficulté est de trouver un outil de développement qui permette l'édition du code source en UTF-8, ainsi que les fins de ligne UNIX. En ce qui me concerne, j'utilise "Easy Eclipse pour Python". L'éditeur Scite marche aussi. Mais, par exemple, l'éditeur de texte Context, que j'utilisais beaucoup, ne le permet pas.  
  
 ===== Entrée/sortie de chaines de caractères ===== ===== Entrée/sortie de chaines de caractères =====
  
 ==== Chaines de caractères intégrées dans le code source ==== ==== Chaines de caractères intégrées dans le code source ====
 +
 +Quand vous écrivez le code d'un programme, vous utilisez un éditeur de texte qui utilise un encodage vous permettant, par exemple, d'insérer une chaine de caractère comportant des caractères accentués. Quand vous enregistrez le code sur disque, vous devez pouvoir choisir l'encodage utilisé dans l'enregistrement (ou, au moins, le connaitre). Et, pour renseigner python lors de l'exécution, vous devez l'informer de l'encodage du fichier en écrivant la ligne suivante tout au début du code juste après le shebang. Par exemple avec l'encodage "utf-8":
 +
 +<code python>
 +# -*- coding: utf-8 -*-
 +</code>
 +
 +Pour comprendre la liaison entre ces éléments, vous pouvez faire les manips suivantes:
 +
 +  * 
 +
  
 ==== Entrées au clavier de chaines de caractères ==== ==== Entrées au clavier de chaines de caractères ====
Ligne 89: Ligne 101:
 ==== Entrée par lecture de données sur disque ==== ==== Entrée par lecture de données sur disque ====
  
-==== Traitement interne de chaines de caractères ====+==== Conversion interne en unicode ====
  
  
encodage.txt · Dernière modification: 2009/08/31 23:20 de tyrtamos