Beste Antwort
Die anderen Antworten sind nicht ganz richtig.
Unicode enthält zwar eine Liste von Zeichen aus fast allen Weltskripten. Dies ist jedoch nur ein Teil des Unicode-Standards: der Universal Coded Character Set . Der Unicode-Standard enthält auch Regeln zum Rendern, Ordnen, Normalisieren und Codieren dieser Unicode-Zeichen.
UTF-8 ist eine davon Die drei Standardzeichencodierungen, die zur Darstellung von Unicode als Computertext verwendet werden (die anderen sind UTF-16 und UTF-32). In der Vergangenheit wurden Textdateien normalerweise als Bytefolgen codiert, wobei jedes Byte ein Zeichen darstellte. Da ein Byte jedoch nur einen von 256 Werten annehmen kann, ist dies für Unicode nicht möglich. Die einfachste Unicode-Codierung ist UTF-32 , bei der 4 Byte (oder 32 Bit) pro Zeichen verwendet werden. Dies ist jedoch in Bezug auf die Verwendung von Speicher, Speicher und Verarbeitung ineffizient. Bis 1996 wurde angenommen (oder gehofft), dass 2 Bytes ausreichen würden, um jedes Unicode-Zeichen darzustellen, aber dann wurde den Leuten klar, wie viele chinesische Zeichen es gibt. Infolgedessen verwenden einige Sprachen wie JavaScript immer noch 2 Bytes ( UCS-2 ), um Zeichen darzustellen, was zu Problemen beim Umgang mit Zeichen wie \ unicode {x1F60E führen kann }. Um dies zu beheben, wurde UCS-2 durch UTF-16 ersetzt, wobei einige Zeichen durch zwei
UTF-8 ähnelt UTF-16, außer dass seine Codeeinheiten alle ein Byte (8 Bit) lang sind und die Zeichen durch eine bis vier Codeeinheiten dargestellt werden. Nur-Text-Zeichen (dh ASCII-Zeichen) werden alle durch ein einzelnes Byte dargestellt, und zwar auf eine Weise, die mit normalen Nicht-Unicode-Zeichenfolgen identisch ist. Dies hat den großen Vorteil, dass älterer ASCII-Text auch für UTF-8 gültig ist. Darüber hinaus werden die ASCII-darstellenden Bytes nicht für die Darstellung anderer Zeichen verwendet, sodass ältere Programme, die nach diesen suchen, nicht aktualisiert werden müssen. Diese Vorteile in Verbindung mit der Tatsache, dass UTF-8 normalerweise der platzsparendste Weg ist Das Speichern von Unicode-Text (insbesondere für westliche Texte) bedeutet, dass die überwiegende Mehrheit der Webseiten heutzutage in UTF-8 codiert ist.
Antwort
Das Textverarbeitungsprogramm muss etwas ausgeben (und etwas in einer Datei speichern). Wenn Sie möchten, dass Programme zusammenarbeiten, Ihr Textverarbeitungsprogramm beispielsweise mit Ihren Drucker- und Scannertreibern kommuniziert, müssen Sie beschreiben, wie diese kommunizieren. Und das möchten Sie effizient tun Ein Standard ermöglicht diese Interkommunikation. Andernfalls funktionieren Ihre Microsoft Word-Angebote nicht mit Ihrem Canon-Drucker und HP Scanner. Nicht das, was Sie möchten.
Bearbeiten hinzugefügt: Siehe Comets Antwort dazu, wie Unicode mit Semantik zusammenhängt (nicht mit Syntax) /Darstellung). Dies geht zu meinem Punkt über Interoperabilität. Sie möchten, dass Ihre Zeichenfolge „aussagekräftig“ ist. Aus diesem Grund werden einige Dinge in Unicode dargestellt, andere nicht. Die Benutzer des lateinischen Alphabets, die Benutzer des kyrillischen Alphabets, die Benutzer des griechischen Alphabets und die Benutzer des türkischen Alphabets haben alle einen Buchstaben, der wie „a“ aussieht (obwohl sie in einigen Schriftarten unterscheidbar sind und in anderen nicht), aber die Autoren in diesen Sprachen berücksichtigen sie verschiedene Zeichen (sie haben einen semantischen Unterschied). Unicode betrachtet sie daher als unterschiedliche Codepunkte. Sie repräsentieren unterschiedliche Semantiken, sortieren unterschiedlich usw. Gleiches gilt für linke und rechte Anführungszeichen sowie für bestimmte Akzentzeichen. In einigen Sprachen machen sie einen semantischen Unterschied. Sie erhalten eine bestimmte Art von Interoperabilität, wenn Sie die Semantik korrekt darstellen.
Sie erhalten eine andere Art, wenn Sie die Dinge bildlich korrekt darstellen. Unicode strebt jedoch nach dem ersten und nicht nach dem zweiten.
Wenn Unicode Homoglyphen als einzelne Zeichen darstellen würde, hätten sie das Problem, welche Schriftart verwendet wird, und dies würde die semantische Korrektheit zerstören. Ein lateinischer Buchstabe a in schwarzer Schrift unterscheidet sich stark von einem helvetischen von einem römischen usw. Und Schräg- und Kursivschrift sind nicht immer gleich, aber manchmal auch.
Wenn ich in Bulgarien Zeichen lese, meistens Manchmal verwenden sie eine ganz andere Schriftart für ihre kyrillischen Zeichen als ihre lateinische Transkription, so dass es offensichtlich ist, dass sie unterschiedliche Zeichen sind, selbst für Dinge wie den Buchstaben „a“. Aber manchmal tun sie es nicht und wenn ich Bm auf einem Nummernschild sehe, muss ich unterscheiden, ob es auf Englisch in Vt transkribiert wird oder einfach das lateinische Bm ist, und es gibt ganze Wörter wie diese, die ich lesen muss, um zu wissen, welchen Zeichensatz sie haben benutzen.
Und selbst semantische Korrektheit zu erlangen ist schwierig. Das deutsche Scharf-s existiert nur in Kleinbuchstaben. Wenn Sie das Wort in Großbuchstaben drucken, verwenden Sie zwei S-Zeichen. Es gibt jedoch Wörter in Kleinbuchstaben, die zwei Kleinbuchstaben verwenden, und solche, die Scharf- verwenden. s.
Daher ist Unicode wie fast alle Standards ein Kompromiss. Es wird versucht, die richtigen Antworten zu finden, damit Wörter korrekt dargestellt und damit übertragen werden können. Es wird nicht versucht, „grafisch“ korrekt zu sein, sodass eine Unicode-Sequenz ihre gedruckte Darstellung mit allen vorgeschriebenen Details eindeutig beschreibt. Dazu benötigen Sie mehr als nur Unicode.
Und sobald Sie diesen Pfad eingeschlagen haben, treten Probleme mit Geräten auf, die die gewünschte Beschreibung nicht ausgeben (oder eingeben) können. Ein 200-dpi-Drucker kann nur so viel und es gibt Feinheiten, die ein 1200-dpi-Drucker ausdrücken kann, die bei 200 dpi einfach verloren gehen. Die Frage wird, ob es dich interessiert? Manchmal tun Sie das, aber manchmal nicht.
Unicode ist in vielen Fällen gut, in denen Sie dies nicht tun und einfach die richtige Semantik wollen. Wenn Sie ein Wort eindeutig übertragen möchten und wissen, welche Unicode-Codepunkte verwendet werden, wissen Sie, wie das Wort in einer natürlichen Sprache geschrieben ist. Die Existenz von Homoglyphen erlaubt es einem, mehrdeutig zu sein, erfordert es aber nicht. Sie können in Unicode eindeutig sein. Sie können einfach nicht alle Details darstellen, wie gedruckt werden könnte.