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