SSH utf-8 - iso8859-1

Didier Raboud didier at raboud.com
Sam 17 Déc 05:30:01 UTC 2005


Bonjour, 

je me lance...qu'on me corrige si je dis une bêtise...

Un fichier, c'est une suite de bits, soit des 1 et des 0. Pour faire 
l'analogie avec la parole, c'est le son.

Ensuite, entre deux interlocuteurs informatiques (un serveur et un navigateur 
par exemple), il faut s'entendre sur quelle suite de bits correspond à quel 
caractère et combien il faut de bits pour définir un caractère. Pour ça, il 
faut des alphabets (analogie "parole", c'est la langue), ce qu'on appelle, en 
anglais "charset" ou "character set", "codage de caractère" en français.

Exemple avec le caractère "A majuscule"

* en ASCII (un des premiers, sur 7 bits + un bit 0 [le premier ici, bit de 
poids fort]):
01000001
* en ISO-8859-1 (de même qu'en ISO-8859-15, préférable), sur 8 bits:
01000001 (on notera que c'est la même chose... )
* en UTF-8 (extension de l'ASCII en utilisant le bit à 0 et de longueur 
variable):
01000001 (on notera que c'est encore la même chose).

Oui, l'exemple du A majuscule est plutôt bateau. Mais c'est normal. C'est 
justement parce que le A se code de la même manière dans tous les codages de 
caractères qu'il est possible, par défaut, d'avoir une certaine 
"inter-opérabilité".

Prenons un autre exemple: le é (e accent aigu) [1]:

* en ASCII: n'existe pas !
* en ISO-8859-1(5):
11101001
* en UTF-8:
11000011 10101001

Ici, on a une différence. Si on décode la suite UTF8 en ISO-8859-15, on 
obtient deux caractères (vu que la longueur est double): é....

L'encodage est un problème de fichier, pas de système ! On dit, par abus de 
langage, que Ubuntu est en UTF-8. Cela signifie en fait que (presque [2]) 
tous les fichiers sont encodés en UTF-8 et que le format "par défaut" est 
l'UTF-8. Mais il est simple d'enregistrer un fichier en ISO-8859-15 ou en 
JIS.

> Par exemple... si je fais un fichier sur ma desktop (une page web) et que
> je la pousse sur un serveur apache qui lui est en iso-8859-1... que ce
> passe-t-il?

Si tu enregistres ton fichier en UTF-8, il sera en UTF-8 sur le serveur. 
Simplement, si ton fichier est un fichier PHP qui envoie un entête HTTP 
annonçant de l'ISO-8859-15 (ce qui permet au navigateur de déchiffrer 
correctement la suite de bits qu'il va recevoir) et que tes caractères sont 
en UTF-8, cela va poser un problème. Il faut donc s'assurer d'une certaine 
cohérence entre fichiers et entêtes HTTP.

> Ou si je fais un get d'un fichier iso-8859-1 vers ma machine pour le
> modifier... les accents sont tout croche.

C'est parce que ton éditeur a ouvert le fichier dans un codage de caractères 
erroné. Normalement, il est possible de préciser à ton éditeur le codage de 
caractères que tu désires utiliser (bien qu'il devrait "deviner" tout seul).

Est-ce que c'est un peu plus clair ?

Sources: Wikipedia. Articles:
http://fr.wikipedia.org/wiki/Codage_de_caractères
http://fr.wikipedia.org/wiki/ASCII
http://fr.wikipedia.org/wiki/ISO_8859-1
http://fr.wikipedia.org/wiki/ISO_8859-15
http://fr.wikipedia.org/wiki/Unicode
http://fr.wikipedia.org/wiki/UTF-8

Salutations, HoPHP - Didier

P.S. Je ne suis pas certain de mes exemples, mais le principe est là...

[1] L'exemple du œ est un mauvais exemple... Voir sources.
[2] Certaines pages de man, par exemple, ne sont pas en UTF-8, mais décodées 
comme telles....
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: non disponible
Type: application/pgp-signature
Taille: 189 octets
Desc: non disponible
URL: <https://lists.ubuntu.com/archives/ubuntu-fr/attachments/20051217/95bb7a18/attachment.pgp>


Plus d'informations sur la liste de diffusion ubuntu-fr