Wat is het ANSI-formaat?

Wat is de ANSI-coderingsindeling? Is het een standaard systeemindeling?
In welk opzicht verschilt het van ASCII?


Antwoord 1, autoriteit 100%

ANSI-codering is een enigszins algemene term die wordt gebruikt om te verwijzen naar de standaardcodepagina op een systeem, meestal Windows. Het wordt op de juiste manier Windows-1252genoemd in westerse/VS. systemen. (Het kan bepaalde andere Windows-codepagina’sop andere systemen vertegenwoordigen.) Dit is in wezen een uitbreiding van de ASCII-tekensetin die zin dat het alle ASCII-tekens bevat met een extra 128-tekencode. Dit verschil is te wijten aan het feit dat “ANSI”-codering 8-bits is in plaats van 7-bits zoals ASCII is (ASCII wordt tegenwoordig bijna altijd gecodeerd als 8-bits bytes met de MSBingesteld op 0). Zie het artikel voor een uitleg waarom deze codering gewoonlijk ANSI wordt genoemd.

De naam “ANSI” is een verkeerde benaming, omdat deze niet overeenkomt met een echte ANSI-standaard, maar de naam is blijven hangen. ANSI is niet hetzelfde als UTF-8.


Antwoord 2, autoriteit 22%

Technisch gezien zou ANSI hetzelfde moeten zijn als US-ASCII. Het verwijst naar de ANSI X3.4-standaard, wat simpelweg de door de ANSI-organisatie geratificeerde versie van ASCII is. Het gebruik van de tekens met de hoogste bitset is niet gedefinieerd in ASCII/ANSI omdat het een tekenset van 7 bits is.

Maar jarenlang misbruik van de term door de DOS- en vervolgens Windows-gemeenschap heeft zijn praktische betekenis verlaten als “de systeemcodepagina van welke machine dan ook die wordt gebruikt”. De systeemcodepagina is ook wel bekend als ‘mbcs’, omdat dit op Oost-Aziatische systemen een codering van meerdere bytes per teken kan zijn. Sommige codetabellen kunnen zelfs top-bit-clear bytes gebruiken als trailing bytes in een reeks van meerdere bytes, dus het is niet eens strikt compatibel met gewone ASCII… maar zelfs dan wordt het nog steeds “ANSI” genoemd.

In de Amerikaanse en West-Europese standaardinstellingen verwijst “ANSI” naar Windows-codepagina 1252. Dit is niet hetzelfde als ISO-8859-1 (hoewel het vrij gelijkaardig is). Op andere machines kan het van alles zijn. Dit maakt “ANSI” volkomen nutteloos als externe coderingsidentificatie.


Antwoord 3, autoriteit 14%

Strict genomen bestaat er niet zoiets als ANSI-codering. In de volksmond wordt de term ANSI gebruikt voor verschillende coderingen:

  1. ISO 8859-1
  2. Windows CP1252
  3. Huidige systeemcodering op een Windows-machine (in Win32 API-terminologie).

Antwoord 4, autoriteit 8%

Er was een tijd dat Microsoft, net als iedereen, 7-bits tekensets gebruikte, en ze bedachten hun eigen tekensets wanneer het hen uitkwam, hoewel ze ASCII als een kernsubset behielden. Toen realiseerden ze zich dat de wereld was overgestapt op 8-bit-coderingen en dat er internationale standaarden waren, zoals de ISO-8859-familie. Als je in die tijd een internationale standaard wilde bemachtigen en je woonde in de VS, dan kocht je die van het American National Standards Institute, ANSI, die internationale standaarden herpubliceerde met hun eigen merk en nummers (dat is omdat de Amerikaanse regering wil conformiteit met Amerikaanse normen, niet met internationale normen). Dus Microsoft’s kopie van ISO-8859 zei “ANSI” op de omslag. En omdat Microsoft in die tijd niet erg gewend was aan standaarden, realiseerden ze zich niet dat ANSI ook veel andere standaarden publiceerde. Dus verwezen ze naar de normen in de ISO-8859-familie (en de varianten die ze uitvonden, omdat ze de normen in die tijd niet echt begrepen) met de naam op de omslag, “ANSI”, en het vond zijn weg naar Microsoft gebruikersdocumentatie en dus in de gebruikersgemeenschap. Dat was zo’n 30 jaar geleden, maar tegenwoordig hoor je de naam nog wel eens.


Antwoord 5, autoriteit 6%

ASCIIdefinieert gewoon een 7-bits codepagina met 128 symbolen. ANSI breidt dit uit tot 8 bit en er zijn verschillende codetabellen voor de symbolen 128 tot 255.

De naamgeving ANSI is niet correct omdat het eigenlijk de ISO/IEC 8859-norm is die deze codetabellen definieert. Zie ISO/IEC 8859voor referentie. Er zijn 16 codetabellen ISO/IEC 8859-1 tot ISO/IEC 8859-16.

Windows-1252is opnieuw gebaseerd op ISO/IEC 8859-1 met enige aanpassingen voornamelijk in het bereik van de C1-besturingssetin het bereik van 128 tot 159. Wikipedia stelt dat Windows- 1252 wordt ook wel ISO-8859-1 genoemd met een tweede koppelteken tussen ISO en 8859. (Ongelooflijk! Wie doet zoiets?!?)


Antwoord 6, autoriteit 2%

In principe verwijst “ANSI” naar de oude codepagina op Windows. Zie ook een artikel van Raymond Chenover dit onderwerp:

De bron hiervan komt van het feit dat de Windows-codepagina 1252 oorspronkelijk was gebaseerd op een ANSI-concept, dat ISO-norm 8859-1 werd.

De eerste 127 tekens zijn identiek aan ASCII in de meeste codetabellen, de bovenste tekens variëren echter.

ANSI betekent echter nietautomatisch CP1252 of Latin 1.

Ondanks alle verwarring moet je tegenwoordig dergelijke problemen gewoon vermijden en Unicode gebruiken.


Antwoord 7

Voor het geval uw pc geen “westerse” pc is en u niet weet welke codepagina wordt gebruikt, kunt u deze pagina bekijken: National Language Support (NLS) API-referentie

[Microsoft heeft deze verwijzing verwijderd, neem het van web-archive National Language Support (NLS) API-referentie

Of u kunt uw register opvragen:

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:\>

Antwoord 8

Bij gebruik van enkelbyte-tekens definieert het ASCII-formaat de eerste 127 tekens. De uitgebreide tekens van 128-255 worden gedefinieerd door verschillende ANSI-codetabellen om beperkte ondersteuning voor andere talen mogelijk te maken. Om een ANSI-gecodeerde tekenreeks te begrijpen, moet u weten welke codepagina deze gebruikt.


Antwoord 9

Ik herinner me dat “ANSI”-tekst verwees naar de pseudo-VT-100-escapecodes die in DOS kunnen worden gebruikt via het ANSI.SYS-stuurprogramma om de stroom van streaming-tekst te veranderen… Waarschijnlijk niet waar u naar verwijst, maar als het zo is zie http://en.wikipedia.org/wiki/ANSI_escape_code


Antwoord 10

ANSI(ook bekend als Windows-1252/WinLatin1) is een tekencodering van het Latijnse alfabet, redelijk vergelijkbaar met ISO-8859-1.
Misschien wil je het op Wikipediabekijken.

Other episodes