ANSI-Datei mit Zeichensatz mit lateinischem Zeichen

1625
Jeferson Tenorio

Ich habe Zweifel an der Kodierung / Zeichensatz.

Ich mache einen Test. Geben Sie den String "TEST Á" ohne die Anführungszeichen in Notepad ++ mit encode in ANSI ein.

"Die ANSI-Zeichensätze sind für ASCII-Zeichen wie die Ziffern 0-9 und die englischen Buchstaben az und AZ alle gleich" ( http://www.firstobject.com/convert-ansi-file-to-unicode.htm )

Zu meiner Überraschung hat das Notizbuch die Datei normalerweise gespeichert, ich kann sie normalerweise mit Akzentuierung bei Ansi Encoding lesen.

Bei einem anderen Test habe ich dieselbe Datei mit HxD ( http://mh-nexus.de/de/hxd/ ) geöffnet, und meine Datei ist auch korrekt, mit dem lateinischen Zeichen "Á" am Ende der Datei. Siehe das Hexa unten:

54 45 53 54 20 C1 -> TEST Á

Ich dachte, man sollte UTF-8-Codierung verwenden, um dies zu erreichen, ist aber nicht notwendig.

Kann mir jemand erklären, wie es möglich ist?

0

2 Antworten auf die Frage

0
RedGrittyBrick

Sie können einen beliebigen Zeichensatz und eine beliebige Kodierung verwenden, um eine Datei zu erstellen und anzuzeigen.

Sie müssen lediglich sicherstellen, dass Sie beim Anzeigen den gleichen Satz und die gleiche Codierung verwenden, mit der die Datei geschrieben wurde.

Die meisten Zeichensätze haben tatsächlich eine große Überlappung. Zum Beispiel haben die meisten Zeichensätze (außer EBCDIC und andere) den ASCII-Zeichensatz an denselben Positionen (dh mit denselben Codepunkten) wie ASCII. Daher können Sie eine Datei im Unicode-Zeichensatz mit UTF-8-Codierung schreiben. Solange die Datei nur Zeichen enthält, die in ASCII-Format vorliegen, können Sie diese Datei mit einer Windows-Latin-1-Codierung anzeigen.

Hinweis: Microsoft ist sehr schlampig mit Begriffen wie "ANSI" und "Unicode".


Aktualisieren:

Erstens sollten Sie auf Jukkas Antwort achten, da Jukka ein Experte für dieses Thema ist .

Zu Ihrem Á siehe diesen Auszug hier

Dec Hex ASC PC 437 850 Win Lat1 Uni 192 00C0 └ └ └ À À À 193 00C1 ┴ ┴ ┴ Á Á Á 194 00C2 ┬ ┬ ┬ Â Â Â 195 00C3 ├ ├ ├ Ã Ã Ã 196 00C4 ─ ─ ─ Ä Ä Ä 197 00C5 ┼ ┼ ┼ Å Å Å 

Beachten Sie, dass Á sich in Windows Latin-1, in ISO 8859-1 Latin 1 und in Unicode / ISO 10646 am Codepunkt 194 (0xC1) befindet. Wenn Sie Á in Windows Latin-1 schreiben, können Sie es als ISO 8859-1 anzeigen.

Sie hätten Probleme, wenn Sie versuchen würden, es als Unicode zu lesen, da Unicode-Kodierungen mehrere Bytes verwenden, um dieses Zeichen darzustellen.


# echo $LANG en_US.UTF-8  # cat t TEST Á  # hexdump -C t 00000000 54 45 53 54 20 c3 81 0a |TEST ...| 00000008 

Beachten Sie, dass Á (Unicode-Codepunkt 00C1) in UTF-8 als c3 81 codiert ist

0
Jukka K. Korpela

The default encoding in Notepad++ is called “ANSI”, without clarification; it may mean windows-1252, or it may mean whatever 8-bit encoding is the system’s native 8-bit encoding (in your case, it’s probably windows-1252 anyway). “ANSI” is a Microsoft misnomer for its 8-bit encodings, one of which (now known as windows-1252) was long ago submitted to the American National Standards Institute for approval – and rejected.

There is no problem in entering “Á” in windows-1252 encoding. Naturally, Notepad++ also displays it OK. So do many, many other programs.

You would need UTF-8 if you wanted to enter “Ć” for example. Many people use UTF-8 even if they don’t need characters outside windows-1252 right now, to avoid any need to change the encoding later, if new characters are added.