Réponses:
Le codage ANSI est un terme légèrement générique utilisé pour faire référence à la page de codes standard sur un système, généralement Windows. Il est plus correctement appelé Windows-1252 sur les systèmes occidentaux / américains. (Il peut représenter certaines autres pages de codes Windows sur d'autres systèmes.) Il s'agit essentiellement d'une extension du jeu de caractères ASCII en ce qu'il inclut tous les caractères ASCII avec 128 codes de caractères supplémentaires. Cette différence est due au fait que le codage "ANSI" est de 8 bits plutôt que de 7 bits comme ASCII (ASCII est presque toujours codé de nos jours en octets de 8 bits avec le MSB mis à 0). Consultez l'article pour une explication des raisons pour lesquelles ce codage est généralement appelé ANSI.
Le nom "ANSI" est un terme impropre, car il ne correspond à aucune norme ANSI réelle, mais le nom est resté. ANSI n'est pas identique à UTF-8.
windows-1254
.
Techniquement, ANSI doit être identique à US-ASCII. Il fait référence à la norme ANSI X3.4, qui est simplement la version ratifiée de l'ASCII par l'organisation ANSI . L'utilisation des caractères du jeu de bits supérieur n'est pas définie en ASCII / ANSI car il s'agit d'un jeu de caractères 7 bits.
Cependant, des années d'utilisation abusive du terme par la communauté DOS et par la suite Windows ont laissé leur sens pratique comme «la page de codes système de la machine utilisée». La page de codes du système est également parfois appelée «mbcs», car sur les systèmes d'Asie de l'Est, il peut s'agir d'un codage de plusieurs octets par caractère. Certaines pages de codes peuvent même utiliser des octets effaçant le bit supérieur comme octets de fin dans une séquence multi-octets, donc ce n'est même pas strictement compatible avec ASCII ordinaire ... mais même alors, il est toujours appelé "ANSI".
Sur les paramètres par défaut des États-Unis et d'Europe occidentale, «ANSI» correspond à la page de codes Windows 1252. Ce n'est pas la même chose que ISO-8859-1 (bien qu'il soit assez similaire). Sur d'autres machines, cela pourrait être autre chose. Cela rend «ANSI» totalement inutile comme identifiant de codage externe.
À proprement parler, le codage ANSI n'existe pas. Familièrement, le terme ANSI est utilisé pour plusieurs codages différents:
Il était une fois Microsoft, comme tout le monde, qui utilisait des jeux de caractères 7 bits, et ils ont inventé le leur quand cela leur convenait, bien qu'ils aient conservé ASCII comme sous-ensemble de base. Ils ont ensuite réalisé que le monde était passé aux encodages 8 bits et qu'il existait des normes internationales, comme la famille ISO-8859. À cette époque, si vous vouliez vous procurer une norme internationale et que vous viviez aux États-Unis, vous l'avez achetée à l'American National Standards Institute, ANSI, qui a republié les normes internationales avec leur propre marque et numéros (c'est parce que le gouvernement américain veut conformité aux normes américaines et non aux normes internationales). Ainsi, la copie ISO-8859 de Microsoft indiquait "ANSI" sur la couverture. Et parce que Microsoft n'était pas très habitué aux normes à cette époque, ils ne l'ont pas fait Je me rends compte que l’ANSI a également publié de nombreuses autres normes. Ils ont donc fait référence aux normes de la famille ISO-8859 (et aux variantes qu'ils ont inventées, car ils ne comprenaient pas vraiment les normes à l'époque) par le nom sur la couverture, "ANSI", et il a trouvé son chemin dans Microsoft documentation utilisateur et donc dans la communauté des utilisateurs. C'était il y a environ 30 ans, mais vous entendez encore parfois le nom aujourd'hui.
ASCII définit simplement une page de codes 7 bits avec 128 symboles. ANSI étend cela à 8 bits et il existe plusieurs pages de codes différentes pour les symboles 128 à 255.
La dénomination ANSI n'est pas correcte car c'est en fait la norme ISO / IEC 8859 qui définit ces pages de codes. Voir ISO / IEC 8859 pour référence. Il existe 16 pages de codes ISO / IEC 8859-1 à ISO / IEC 8859-16.
Windows-1252 est à nouveau basé sur ISO / IEC 8859-1 avec quelques modifications principalement dans la plage du jeu de contrôles C1 dans la plage 128 à 159. Wikipedia indique que Windows-1252 est également appelé ISO-8859-1 avec une seconde trait d'union entre ISO et 8859. (Incroyable! Qui fait quelque chose comme ça?!?)
Fondamentalement, "ANSI" fait référence à la page de code héritée sur Windows. Voir aussi un article de Raymond Chen sur ce sujet:
La source de ceci vient du fait que la page de codes Windows 1252 était à l'origine basée sur un projet ANSI, qui est devenu la norme ISO 8859-1.
Les 127 premiers caractères sont identiques à ASCII dans la plupart des pages de codes, les caractères supérieurs varient cependant.
Cependant, ANSI ne signifie pas automatiquement CP1252 ou Latin 1.
Malgré toute confusion, vous devez simplement éviter de tels problèmes de nos jours et utiliser Unicode.
Juste au cas où votre PC n'est pas un PC "occidental" et que vous ne savez pas quelle page de code est utilisée, vous pouvez consulter cette page: Référence de l'API NLS (National Language Support)
[Microsoft a supprimé cette référence, la forme sous forme d'archive Web Référence de l'API NLS (National Language Support)
Ou vous pouvez interroger votre registre:
C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP REG_SZ 1252
End of search: 1 match(es) found.
C:\>
Lorsque vous utilisez des caractères à un octet, le format ASCII définit les 127 premiers caractères. Les caractères étendus de 128 à 255 sont définis par diverses pages de codes ANSI pour permettre une prise en charge limitée pour d'autres langues. Afin de donner un sens à une chaîne codée ANSI, vous devez savoir quelle page de code elle utilise.
Je me souviens quand le texte "ANSI" faisait référence aux pseudo codes d'échappement VT-100 utilisables sous DOS via le pilote ANSI.SYS pour modifier le flux de texte en streaming .... Probablement pas ce à quoi vous faites référence, mais si c'est le cas, voir http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (alias Windows-1252 / WinLatin1) est un codage de caractères de l'alphabet latin, assez similaire à ISO-8859-1 . Vous voudrez peut-être y jeter un œil sur Wikipedia .