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 Dernière révision Les deux révisions suivantes | ||
encodage [2009/08/17 08:58] tyrtamos |
encodage [2009/08/17 11:36] 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êmes | ||
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) | ||
+ | * **UTF-32** plus rare, utilise 4 octets par caractères | ||
===== 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' | + | 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:// | Les codages utilisables par Python sont ici: [[http:// | ||
+ | \\ | ||
Si on veut travailler en Unicode avec Python, voici quelques principes simples à respecter: | Si on veut travailler en Unicode avec Python, voici quelques principes simples à respecter: | ||
* Dans les traitements, | * Dans les traitements, | ||
- | * On convertit le plus tôt possible tout ce qui rentre: saisie, code source, lecture d'une base de données, réception d'un réseau, etc... | + | * On convertit le plus tôt possible tout ce qui rentre: saisie, code source, lecture |
- | * On convertit le plus tard possible tout ce qui sort (affichage, impression, écriture dans une base de données, émission vers un réseau, etc... | + | * On convertit le plus tard possible tout ce qui sort (affichage, impression, écriture |
+ | \\ | ||
Remarques: | Remarques: | ||
Ligne 66: | Ligne 70: | ||
* 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. | * 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) | ||
+ | |||
+ | 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' | ||
===== Entrée/ | ===== Entrée/ |