Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
encodage [2009/08/17 08:17] tyrtamos |
encodage [2009/08/17 09:13] tyrtamos |
||
---|---|---|---|
Ligne 37: | Ligne 37: | ||
Pour les autres pays ayant des caractères non latins, il existe d' | Pour les autres pays ayant des caractères non latins, il existe d' | ||
- | Mais maintenant, comment faire pour que les même programmes puissent, sans changer | + | \\ |
+ | Mais maintenant, comment faire pour que les même programmes puissent, sans changer | ||
Il y a en fait plusieurs types d' | Il y a en fait plusieurs types d' | ||
Ligne 43: | Ligne 44: | ||
En simplifiant, | En simplifiant, | ||
- | * **UCS-2** est l'unicode | + | * **UCS-2** est l'Unicode |
* **UTF-8** utilise de 1 à 4 octets par caractère. L' | * **UTF-8** utilise de 1 à 4 octets par caractère. L' | ||
* **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) | ||
Ligne 49: | Ligne 50: | ||
===== Généralités sur l' | ===== Généralités sur l' | ||
+ | Avec Python 2.6, on peut toujours travailler avec des codages sur un octets, par exemple avec l' | ||
+ | Les codages utilisables par Python sont ici: [[http:// | ||
+ | \\ | ||
+ | Si on veut travailler en Unicode avec Python, voici quelques principes simples à respecter: | ||
+ | * Dans les traitements, | ||
+ | * On convertit le plus tôt possible tout ce qui rentre: saisie, code source, lecture d'un fichier de données ou d'une base de données, réception d'un réseau, etc... | ||
+ | |||
+ | * On convertit le plus tard possible tout ce qui sort (affichage, impression, écriture dans un fichier de données ou dans une base de données, émission vers un réseau, etc... | ||
+ | |||
+ | \\ | ||
+ | Remarques: | ||
+ | |||
+ | * au fil des dernières versions de Python, il est de plus en plus facile de travailler en Unicode, mais ce n'est encore pas parfait. Par exemple, je ne suis pas sûr que tous les modules Python, et surtout les modules tiers, supportent l' | ||
+ | |||
+ | * la nécessité de convertir en entrée et en sortie suppose que vous avez connaissance des encodages utilisés dans les données externes! Ce n'est pas le plus simple. | ||
+ | |||
+ | \\ | ||
+ | Pour reproduire les tests ci-dessous, je vous suggère de vous munir de 3 outils supplémentaires: | ||
+ | |||
+ | * un éditeur de texte sachant enregistrer sous différents encodages, y compris l' | ||
+ | |||
+ | * un éditeur hexadécimal permettant de lire des fichiers (ça existe sous Windows et sous Linux) | ||
+ | |||
+ | * une table des caractères (ça existe sous Windows et sous Linux) | ||
===== Entrée/ | ===== Entrée/ |