ANSI nach UTF-8 in Notepad ++

25

Ich habe einen Text in ANSI kodiert:

ANSI-Textdatei

Als ich versuchte, es in UTF-8 zu konvertieren (über das Notepad ++ - Menü Encoding> UTF-8), erhalte ich einige seltsame Zeichen:

UTF-8-Textdatei

Ich dachte, dass UTF-8 eine Obermenge von ANSI ist und dass ich solche Probleme später nicht mehr haben würde. Kann ich die Erscheinung dieser seltsamen Charaktere trotzdem vermeiden?

user3658425
quelle
Ich sehe nicht, was in letzterem Bild seltsam ist
phuclv
Ich meinte die nicht darstellbaren Zeichen. Wie kann man das vermeiden?
user3658425
Hast du die Frage bearbeitet? Ich denke, ich sehe die Bilder umgekehrt
phuclv
1
Ja, tut mir leid, ich habe meine letzte Bearbeitung direkt nach dem Hinzufügen der Bilder verschoben und hiermit den Zusatz gelöscht: Wenn Sie sie wieder hinzufügen können, wäre das großartig!
user3658425

Antworten:

38

UTF-8 ist kein Zeichensatz, sondern nur eine Codierung für Unicode. Die ersten 128 Zeichen sind mit ASCII identisch, unterscheiden sich jedoch in den hohen 128 Bytes. Ein Byte mit gesetztem High-Bit (oder> = 0x80) ist in ASCII ein erweitertes Zeichen, während es in UTF-8 das Startbyte einer Multibyte-Sequenz angibt. Das ist bei 0x93 oder 0x94 der Fall. Ich sehe jedoch nichts Seltsames in der Datei. Hierbei handelt es sich um intelligente Anführungszeichen oder Anführungszeichen mit unterschiedlichen Formen zum Öffnen und Schließen von Anführungszeichen, die häufig bei Verwendung eines Rich-Text-Editors wie MS Word angezeigt werden

Bearbeiten

Die Frage wurde bearbeitet. Ich denke, das liegt daran, dass Sie das falsche Werkzeug gewählt haben. Die encodeMenüpunkte dienen zum Ändern der Kodierung, wenn Sie falsche Zeichenanzeigen haben. Es behandelt nur die gleiche Bytefolge, die von der Festplatte gelesen wurde, wie eine andere Codierung. Da ASCII und UTF-8 unterschiedlich sind, haben Sie eine falsch formatierte UTF-8-Byte-Sequenz und sehen das Ergebnis oben. Sie müssen sich dafür entscheiden convert to UTF-8, um die gesamten Eingabebytes zu ändern

Notizblockkodierung

Sie haben auch ANSI und ASCII verwechselt. ANSI bezieht sich häufig auf Windows-1252, einen Zeichensatz, der in englischen Windows- und einigen westeuropäischen Sprachen verwendet wird. Es ist eine Obermenge von ISO 8859-1, obwohl ISO 8859-1 auch als ANSI bezeichnet werden kann. ISO 8859-1 ist auch die erste 256 Codepunkte von Unicode, es ist also eine Teilmenge von Unicode, aber es ist nicht kompatibel mit UTF-8-Codierung. ASCII ist ein 7-Bit-Zeichensatz und eine Teilmenge des ANSI, der mit 8 Bit codiert ist. Manchmal wird er jedoch auch als ANSI bezeichnet, obwohl er nicht sehr korrekt ist

https://en.wikipedia.org/wiki/ANSI_character_set

Im Allgemeinen ist die Beziehung zwischen Zeichensätzen wie folgt

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode
phuclv
quelle
Vielen Dank, entschuldigen Sie, dass Sie den Zeichensatz durch Kodierung durcheinander gebracht haben. Gibt es eine Möglichkeit, diese nicht anzeigbaren Zeichen zu vermeiden und stattdessen einige anzeigbare Anführungszeichen zu verwenden?
user3658425
@ user3658425 siehe bitte meine bearbeiten
phuclv
1
Ich habe auch die obigen ANSI / ASCII-Informationen bearbeitet
phuclv
3
Beachten Sie, dass Sie im Allgemeinen "UTF-8 ohne Byte Order Mark" verwenden möchten. Wie mehrere andere in der Vergangenheit sagten, "ist UTF-8 die einzige nützliche Zeichenfolgencodierung."
Riking
4
@ WillihamTotland utf8everywhere.org
phuclv