Was ist der Unterschied zwischen UTF-8 y ISO-8859-1 ?
Huch! Ich dachte, ich hätte das geschrieben, aber ich habe es beim Umschreiben verloren. Ich habe es jetzt eingefügt.
Was ist der Unterschied zwischen UTF-8 y ISO-8859-1 ?
Eine weitere wichtige Erkenntnis: Wenn Sie sehen iso-8859-1
bezieht es sich wahrscheinlich auf Fenster-1252 statt ISO/IEC 8859-1 . Sie unterscheiden sich im Bereich 0x80-0x9F, wobei ISO 8859-1 die C1-Steuercodes hat und Windows-1252 stattdessen nützliche sichtbare Zeichen.
ISO 8859-1 hat zum Beispiel 0x85 als Steuerzeichen (in Unicode, U+0085, ``), während Windows-1252 eine horizontale Ellipse hat (in Unicode, U+2026 HORIZONTAL ELLIPSIS, …
).
En WHATWG Kodierungsspezifikation (wie von HTML verwendet) erklärt ausdrücklich iso-8859-1
ein Etikett zu sein für windows-1252
und Webbrowser unterstützen ISO 8859-1 in keiner Weise: Die HTML-Spezifikation besagt, dass alle Kodierungen in der Encoding-Spezifikation unterstützt werden müssen, und nicht mehr.
Interessant ist auch, dass numerische HTML-Zeichenreferenzen im Wesentlichen Windows-1252 für 8-Bit-Werte und nicht Unicode-Codepunkte verwenden; per https://html.spec.whatwg.org/#numeric-character-reference-end-state , …
wird U+2026 statt U+0085 erzeugt.
Aus einem anderen Blickwinkel betrachtet, können Dateien, die sowohl mit Unicode- als auch mit Ascii-Kodierung nicht gelesen werden, weil sie ein Byte 0xc0
enthalten, scheinen von iso-8859-1 richtig gelesen zu werden. Die Einschränkung ist, dass die Datei natürlich keine Unicode-Zeichen enthalten sollte.
Ich habe diese Frage unter dem Gesichtspunkt untersucht, inwieweit sie miteinander vereinbar sind. Latin1 Zeichensatz (iso-8859) ist 100% kompatibel zu in einem utf8 Datenspeicher gespeichert werden. Alle ASCII- und erweiterten ASCII-Zeichen werden als Ein-Byte-Zeichen gespeichert.
Umgekehrt kann der Wechsel von utf8 zu Latin1 funktionieren oder auch nicht. Wenn es irgendwelche 2-Byte-Zeichen gibt (Zeichen jenseits von extended-ascii 255), werden sie nicht in einem Latin1-Datenspeicher gespeichert.
Latin-1 oder iso-8859-1 ist nicht zu 100 % kompatibel mit der Speicherung in utf8. Jedes Latin-n- oder iso-8859-n-Zeichen über 127 wird nicht in ein Einzelbyte-UTF-8-Zeichen übersetzt. Für die Werte 1-127 werden sie jedoch genau übersetzt.
Diese Antwort ist etwas verwirrend, da sie den Begriff "erweitertes ASCII" verwendet, der sich einfach auf jede Zeichenkodierung bezieht, die nicht ASCII ist. UTF-8 und latin-1 sind Beispiele für erweiterte ASCII-Kodierungen. Allerdings können Nicht-ASCII-Latin-1-Zeichen (d. h. Codepunkte über 127) in UTF-8 nicht als ein einziges Byte kodiert werden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.