Bonsoir, lafrech a écrit : | Y a-t-il un encodage qui fasse consensus et que je puisse utiliser | et recommander aux gens avec qui je communique ? (J'ai l'impression | que non...)
Pour compléter les réponses précédentes, non, il n'y a pas d'encodage universel au sens où le problème se situe à quatre niveaux : 1. Les jeux de caractères n'ont pas tous la même taille et n'encodent pas tous le même ensemble de symboles. On ne peut donc généralement pas obtenir de relation bijective entre deux jeux (i.e. pouvoir faire correspondre à chaque caractère d'un jeu un caractère de l'autre jeu). A titre d'exemple : Pour la taille : - Le jeu US-ASCII à une capacité de 128 caractères. - Les jeux ISO-8859-xx, CP437, CP850, CP1252 ont une capacité de 256 caractères. - L'UTF-16 de 65 536. - L'UTF-8, UCS4 de 4 294 967 296 (mais à ce jour, seuls environ 70 000 sont définis). Pour l'ensemble de caractères : - L'ISO-8859-15 définit un code pour le symbole Euro et la ligature entre le o et le e mais pas l'ISO-8859-1. - Le jeu CP1252 définit un code pour les trois points de suspension (qui apparaissent donc sous la forme d'un seul caractère) mais pas le jeu ISO-8859-15. 2. Une fois que l'ensemble de symboles représentés par un jeu de caractères est défini, plusieurs stratégies peuvent être utilisées pour encoder ce jeu et donc stocker les chaînes, les manipuler ou les transférer. On peut annoncer chaque caractère par : - un nombre constant d'octets : 1 pour l'ISO-8859-15), 2 pour l'UTF-16, 4 pour l'UCS-4. - un nombre variable d'octets : de 1 à 6 pour l'UTF-8. => En fait, l'UCS-4 et l'UTF-8 sont deux encodages différents d'un même jeu de caractères nommé « Unicode ». UCS-4 vise la simplicité, UTF-8 la minimisation de l'empreinte mémoire. - un changement de base (chaque digit étant alors codé sur un octet différent) généralement accompagné d'un décalage constant ou variable pour amener les valeurs résultantes dans la plage de caractères US-ASCII considérée comme « robuste ». C'est le cas du Quoted-Printable (=20 pour l'espace de code ASCII 32), des entités XML ( pour l'espace), de l'encodage en base 64. - une séquence symbolique (entités HTML telles que ). Anecdote : pour corser le tout, certains jeux de caractères peuvent ou non s'annoncer par une séquence spéciale (c'est notamment le cas de l'UTF-8 dans les fichiers). 3. Bien évidemment, les choses seraient trop simples si les systèmes d'exploitation et les outils qu'ils font tourner étaient « polyglottes ». Chacun ayant son « dialecte » natif et causant plus ou moins bien quelques « langues étrangères », selon la cible finale, on peut être amené à conseiller des jeux de caractères différents. 4. Cerise sur le gâteau, reste le problème de l'encodage des fins de ligne (CR sur Mac, LF sur Unix, CR-LF (ou LF) sous MS-Windows). Et je ne parle même pas des fichiers successivement édités sur Mac, MS-Windows et GNU/Linux avec des outils plus ou moins sérieux (j'ai connu, c'est atroce et les outils de réencodage les plus puissants s'y cassent les dents : il ne vous reste alors que votre bon vieux cerveau et vos mimines pour réparer les dégâts). Au passage, si vous avez besoin de réencoder des textes, je vous conseille vivement recode. A mes yeux, c'est le nec plus ultra en la matière. Par exemple : Texte Unix (ISO-8859-15/LF) vers MS-Windows (CP1252/CR-LF) : echo -e "<p>Sébastien &\nses sœurs</p>" | recode l9/..cp1252/cl Même texte vers HTML 4 avec préservation des caractères diacritiques (supprimez « --diacritic » pour voir) : echo -e "<p>Sébastien &\nses sœurs</p>" | recode --diacritic l9/..h4/ Idem vers XML (testez la commande pour observer les différences avec la ligne précédente) : echo -e "<p>Sébastien &\nses sœurs</p>" | recode --diacritic l9/..h0/ Idem en Quoted-Printable : echo -e "<p>Sébastien &\nses sœurs</p>" | recode l9/../QP A++, Sébastien -- Sébastien Dinot, [EMAIL PROTECTED] Secrétaire de l'APRIL (http://www.april.org) Association pour la Promotion et la Recherche en Informatique Libre
_______________________________________________ Toulouse-ll mailing list Toulouse-ll@toulibre.org http://lolut.utbm.info/cgi-bin/mailman/listinfo/toulouse-ll