Bei der Arbeit stoße ich auf viele japanische Textdateien in Shift-JIS und anderen Codierungen. Es verursacht viele Mojibake- Probleme (nicht lesbare Zeichen) für alle Computerbenutzer. Unicode sollte dieses Problem lösen, indem ein einziger Zeichensatz für alle Sprachen definiert wurde. Die UTF-8-Serialisierung wird für die Verwendung im Internet empfohlen. Warum wechselt nicht jeder von japanischen Codierungen zu UTF-8? Welche Probleme mit oder Nachteile von UTF-8 halten die Menschen zurück?
EDIT: Das W3C listet einige bekannte Probleme mit Unicode auf , könnte dies auch ein Grund sein?
legacy
unicode
character-encoding
Nicolas Raoul
quelle
quelle
Antworten:
Mit einem Wort: Vermächtnis.
Shift-JIS und andere Kodierungen wurden verwendet, bevor Unicode verfügbar / populär wurde, da dies die einzige Möglichkeit war, Japanisch überhaupt zu kodieren. Unternehmen haben in eine Infrastruktur investiert, die nur Shift-JIS unterstützt. Auch wenn die Infrastruktur jetzt Unicode unterstützt, sind sie nach wie vor mit Shift-JIS aus verschiedenen Gründen im Bereich von stecken it-Werken-so-nicht-touch-it über Codierung , was? Die Migration aller vorhandenen Dokumente ist zu kostspielig .
Es gibt viele westliche Unternehmen, die aus den gleichen Gründen immer noch ASCII oder Latin-1 verwenden, aber niemand merkt es, da es nie zu Problemen führt.
quelle
Dies sind die Gründe, aus denen ich mich erinnere, dass UTF-8 oder eine andere Unicode-Darstellung nicht zur Standard-Zeichenkodierung für die Skriptsprache Ruby gemacht wurde, die hauptsächlich in Japan entwickelt wird:
Anscheinend wird diese Argumentation von japanischen Nutzern als ebenso lächerlich empfunden, wie es für englische Leser der Fall wäre, dass es ausreicht, nur einen einzigen Codepunkt für griechisches Alpha zu haben, da sich das lateinische Alphabet aus dem griechischen Alphabet entwickelt hat. " α "und Latin" a ", und lassen Sie das Erscheinungsbild von der verwendeten Schriftart entscheiden. (Gleiches gilt für "β" = "b", "γ" = "g" usw.)
(Beachten Sie, dass ich in diesem Fall keine griechischen Zeichen in stackexchange einfügen könnte.)
Möglicherweise wurden weitere Gründe angeführt, an die ich mich nicht mehr erinnere.
quelle
Die Antwort von deceze hat ein sehr starkes Wahrheitsmerkmal, aber es gibt noch einen weiteren Grund, warum Shift-JIS und andere noch verwendet werden: UTF-8 ist für einige Sprachen, hauptsächlich im CJK-Set, schrecklich ineffizient. Shift-JIS ist, IIRC, eine zwei Byte breite Codierung, wohingegen UTF-8 in seinen Codierungen mit CJK und anderen typischerweise drei Byte und gelegentlich sogar vier Byte umfasst.
quelle
Zählen Sie die Zeichenfolgengröße / Speichernutzung zu den Hauptgründen.
In UTF-8 benötigen ostasiatische Sprachen häufig 3 oder mehr Bytes für ihre Zeichen. Im Durchschnitt benötigen sie 50% mehr Speicher als bei Verwendung von UTF-16 - letzteres ist bereits weniger effizient als die native Codierung.
Der andere Hauptgrund wäre Vermächtnis, wie durch Täuschung hervorgehoben wird.
quelle
Vermächtnis und Speichergröße, wie andere sagten, aber es gibt noch etwas: Katakana-Charaktere.
Die Darstellung von Katakana-Zeichen in Shift-JIS erfordert nur ein Byte. Daher benötigt japanischer Text einschließlich Katakana weniger als 2 Byte pro Zeichen (1,5 für eine 50/50-Mischung), was Shift-JIS effizienter macht als UTF-16 (2 Byte) / char) und viel effizienter als UTF-8 (3 Bytes / char).
Billiger Speicher hätte dies zu einem viel kleineren Problem machen sollen, aber anscheinend nicht.
quelle