Le Jeudi 16 Novembre 2006 22:33, Sébastien Dinot a écrit : > Bonsoir, Merci pour ce cours d'encodage... :-)
> 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
_______________________________________________ Toulouse-ll mailing list Toulouse-ll@toulibre.org http://lolut.utbm.info/cgi-bin/mailman/listinfo/toulouse-ll