Ich habe einen Text in ANSI kodiert:
Als ich versuchte, es in UTF-8 zu konvertieren (über das Notepad ++ - Menü Encoding> UTF-8), erhalte ich einige seltsame Zeichen:
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?
notepad++
character-encoding
utf-8
ansi
user3658425
quelle
quelle
Antworten:
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
encode
Menü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 entscheidenconvert to UTF-8
, um die gesamten Eingabebytes zu ändernSie 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
quelle