Antworten:
ANSI-Codierung ist ein leicht allgemeiner Begriff, der sich auf die Standardcodepage eines Systems bezieht, normalerweise Windows. Auf westlichen / US-amerikanischen Systemen wird es besser als Windows-1252 bezeichnet. (Es kann bestimmte andere Windows-Codepages auf anderen Systemen darstellen.) Dies ist im Wesentlichen eine Erweiterung des ASCII-Zeichensatzes , da alle ASCII-Zeichen mit zusätzlichen 128 Zeichencodes enthalten sind. Dieser Unterschied ist auf die Tatsache zurückzuführen, dass die "ANSI" -Codierung 8-Bit und nicht 7-Bit ist, wie dies bei ASCII der Fall ist (ASCII wird heutzutage fast immer als 8-Bit-Bytes codiert, wobei das MSB auf 0 gesetzt ist). Im Artikel finden Sie eine Erklärung, warum diese Codierung normalerweise als ANSI bezeichnet wird.
Der Name "ANSI" ist eine Fehlbezeichnung, da er keinem tatsächlichen ANSI-Standard entspricht, aber der Name ist geblieben. ANSI ist nicht dasselbe wie UTF-8.
windows-1254
.
Technisch sollte ANSI mit US-ASCII identisch sein. Es bezieht sich auf den ANSI X3.4-Standard, bei dem es sich lediglich um die ratifizierte Version von ASCII der ANSI- Organisation handelt. Die Verwendung der Zeichen mit dem höchsten Bit-Satz ist in ASCII / ANSI nicht definiert, da es sich um einen 7-Bit-Zeichensatz handelt.
Der jahrelange Missbrauch des Begriffs durch die DOS- und anschließend die Windows-Community hat jedoch seine praktische Bedeutung als „Systemcodepage des jeweils verwendeten Computers“ verlassen. Die Systemcodepage wird manchmal auch als "mbcs" bezeichnet, da dies auf ostasiatischen Systemen eine Codierung mit mehreren Bytes pro Zeichen sein kann. Einige Codepages können sogar Top-Bit-Clear-Bytes als nachfolgende Bytes in einer Multibyte-Sequenz verwenden, daher ist es nicht einmal streng kompatibel mit einfachem ASCII ... aber selbst dann heißt es immer noch "ANSI".
In den Standardeinstellungen für die USA und Westeuropa ist „ANSI“ der Windows-Codepage 1252 zugeordnet. Dies ist nicht dasselbe wie ISO-8859-1 (obwohl es ziemlich ähnlich ist). Auf anderen Maschinen könnte es überhaupt etwas anderes sein. Dies macht "ANSI" als externe Codierungskennung völlig nutzlos.
Genau genommen gibt es keine ANSI-Codierung. Umgangssprachlich wird der Begriff ANSI für verschiedene Codierungen verwendet:
Es war einmal, dass Microsoft wie alle anderen 7-Bit-Zeichensätze verwendete und ihre eigenen erfand, wenn es ihnen passte, obwohl sie ASCII als Kernuntermenge behielten. Dann stellten sie fest, dass die Welt auf 8-Bit-Codierungen umgestiegen war und dass es internationale Standards gab, wie zum Beispiel die ISO-8859-Familie. Wenn Sie damals einen internationalen Standard haben wollten und in den USA lebten, haben Sie ihn vom American National Standards Institute (ANSI) gekauft, das internationale Standards mit eigenem Branding und eigenen Nummern neu veröffentlichte (das liegt daran, dass die US-Regierung dies wünscht) Konformität mit amerikanischen Standards, nicht mit internationalen Standards). In der Microsoft-Kopie von ISO-8859 stand auf dem Cover "ANSI". Und weil Microsoft damals nicht sehr an Standards gewöhnt war, haben sie es nicht getan. Ich weiß nicht, dass ANSI auch viele andere Standards veröffentlicht hat. Daher verwiesen sie auf die Standards in der ISO-8859-Familie (und auf die Varianten, die sie erfunden hatten, weil sie damals die Standards nicht wirklich verstanden hatten) mit dem Namen auf dem Cover "ANSI" und fanden Eingang in Microsoft Benutzerdokumentation und damit in die Benutzergemeinschaft. Das war vor ungefähr 30 Jahren, aber manchmal hört man heute noch den Namen.
ASCII definiert nur eine 7-Bit-Codepage mit 128 Symbolen. ANSI erweitert dies auf 8 Bit und es gibt mehrere verschiedene Codepages für die Symbole 128 bis 255.
Die Benennung ANSI ist nicht korrekt, da es tatsächlich die ISO / IEC 8859-Norm ist, die diese Codepages definiert. Siehe ISO / IEC 8859 als Referenz. Es gibt 16 Codepages ISO / IEC 8859-1 bis ISO / IEC 8859-16.
Windows-1252 basiert wieder auf ISO / IEC 8859-1, wobei einige Änderungen hauptsächlich im Bereich des C1-Steuerelements im Bereich von 128 bis 159 vorgenommen wurden. Wikipedia gibt an, dass Windows-1252 mit einer Sekunde auch als ISO-8859-1 bezeichnet wird Bindestrich zwischen ISO und 8859. (Unglaublich! Wer macht so etwas?!?)
Grundsätzlich bezieht sich "ANSI" auf die ältere Codepage unter Windows. Siehe auch einen Artikel von Raymond Chen zu diesem Thema:
Die Ursache hierfür ist die Tatsache, dass die Windows-Codepage 1252 ursprünglich auf einem ANSI-Entwurf basierte, der zum ISO-Standard 8859-1 wurde.
Die ersten 127 Zeichen sind auf den meisten Codepages mit ASCII identisch, die oberen Zeichen variieren jedoch.
ANSI bedeutet jedoch nicht automatisch CP1252 oder Latin 1.
Ungeachtet aller Verwirrung sollten Sie solche Probleme heutzutage einfach vermeiden und Unicode verwenden.
Nur für den Fall, dass Ihr PC kein "westlicher" PC ist und Sie nicht wissen, welche Codepage verwendet wird, können Sie sich diese Seite ansehen: NLS-API-Referenz (National Language Support)
[Microsoft hat diese Referenz entfernt und nimmt sie aus der NLS-API-Referenz (National Language Support) des Webarchivs
Oder Sie können Ihre Registrierung abfragen:
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:\>
Bei Verwendung von Einzelbytezeichen definiert das ASCII-Format die ersten 127 Zeichen. Die erweiterten Zeichen von 128 bis 255 werden von verschiedenen ANSI-Codepages definiert, um eine eingeschränkte Unterstützung für andere Sprachen zu ermöglichen. Um eine ANSI-codierte Zeichenfolge zu verstehen, müssen Sie wissen, welche Codepage sie verwendet.
Ich erinnere mich, als sich "ANSI" -Text auf die Pseudo-VT-100-Escape-Codes bezog, die in DOS über den ANSI.SYS-Treiber verwendet werden können, um den Fluss von Streaming-Text zu ändern. Wahrscheinlich nicht das, worauf Sie sich beziehen, aber wenn es http ist: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (auch bekannt als Windows-1252 / WinLatin1) ist eine Zeichenkodierung des lateinischen Alphabets, die ISO-8859-1 ziemlich ähnlich ist . Vielleicht möchten Sie einen Blick auf Wikipedia werfen .