473 votes

Quelle est la différence entre UTF-8 et ISO-8859-1 ?

Quelle est la différence entre UTF-8 y ISO-8859-1 ?

4voto

Chris Morgan Points 22285

Une autre chose importante à savoir : si vous voyez iso-8859-1 il s'agit probablement de Windows-1252 plutôt que ISO/IEC 8859-1 . Ils diffèrent dans la plage 0x80-0x9F, où l'ISO 8859-1 a les codes de contrôle C1, et Windows-1252 a des caractères visibles utiles à la place.

Par exemple, l'ISO 8859-1 a 0x85 comme caractère de contrôle (en Unicode, U+0085, ``), alors que Windows-1252 a une ellipse horizontale (en Unicode, U+2026 HORIZONTAL ELLIPSIS, ).

El Spécification d'encodage WHATWG (tel qu'utilisé par HTML) déclare expressément iso-8859-1 pour être un label pour windows-1252 La norme HTML stipule que tous les codages de la spécification d'encodage doivent être pris en charge, et pas plus.

Il est également intéressant de noter que les références aux caractères numériques du HTML utilisent essentiellement Windows-1252 pour les valeurs 8 bits plutôt que les points de code Unicode. https://html.spec.whatwg.org/#numeric-character-reference-end-state , … produira U+2026 plutôt que U+0085.

0 votes

Oups ! Je pensais l'avoir écrit, mais je l'ai perdu dans une réécriture. Je l'ai mis maintenant.

3voto

Nikhil VJ Points 512

D'un autre point de vue, les fichiers que les codages unicode et ascii ne parviennent pas à lire parce qu'ils comportent un octet 0xc0 en eux, semblent être lus par iso-8859-1 correctement. Le problème est que le fichier ne doit pas contenir de caractères unicode, bien sûr.

0voto

Alan Jurgensen Points 127

La raison pour laquelle j'ai cherché à répondre à cette question était de savoir en quoi ils sont compatibles. Le jeu de caractères Latin1 (iso-8859) est 100% compatible pour être stocké dans un datastore utf8. Tous les caractères ascii et extended-ascii seront stockés sur un seul octet.

Dans l'autre sens, le passage de utf8 à Latin1 charset peut fonctionner ou non. S'il y a des caractères de 2 octets (caractères au-delà de l'ascii étendu 255), ils ne seront pas stockés dans un datastore Latin1.

2 votes

Utile, mais je pense que vous vouliez dire 127 au lieu de 255 en ascii étendu 255 ?

23 votes

Latin-1, ou iso-8859-1 n'est pas 100% compatible pour être stocké en utf8. Tout caractère Latin-n ou iso-8859-n supérieur à 127 ne sera pas traduit en un caractère utf-8 d'un seul octet. Cependant, pour les valeurs 1-127, ils seront traduits exactement.

6 votes

Cette réponse est un peu confuse dans son utilisation du terme "ascii étendu", qui est juste un terme pour faire référence à tout codage de caractères qui n'est pas ASCII. UTF-8 et latin-1 sont des exemples de codages ASCII étendus. Mais les caractères latin-1 non ASCII (c'est-à-dire les points de code supérieurs à 127) ne peuvent pas être codés sur un seul octet en UTF-8.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X