Was ist Unicode, UTF-8, UTF-16?

395

Was ist die Basis für Unicode und warum wird UTF-8 oder UTF-16 benötigt? Ich habe dies bei Google recherchiert und auch hier gesucht, aber es ist mir nicht klar.

In VSS wird beim Durchführen eines Dateivergleichs manchmal die Meldung angezeigt, dass die beiden Dateien unterschiedliche UTFs haben. Warum sollte das so sein?

Bitte erklären Sie in einfachen Worten.

SoftwareGeek
quelle
123
Klingt so, als müssten Sie das absolute Minimum lesen, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss ! Es ist eine sehr gute Erklärung dafür, was los ist.
Brian Agnew
5
Diese FAQ von der offiziellen Unicode-Website enthält einige Antworten für Sie.
Nemanja Trifunovic
4
@ John: Es ist eine sehr schöne Einführung, aber es ist nicht die ultimative Quelle: Es überspringt einige Details (was für eine Übersicht / Einführung in Ordnung ist!)
Joachim Sauer
5
Der Artikel ist großartig, hat aber einige Fehler und repräsentiert UTF-8 in einem etwas konservativen Licht. Ich schlage vor, utf8everywhere.org als Ergänzung zu lesen.
Pavel Radzivilovsky
2
Werfen
Vertexwahn

Antworten:

550

Warum brauchen wir Unicode?

In den (nicht zu) frühen Tagen existierte nur ASCII. Dies war in Ordnung, da nur ein paar Steuerzeichen, Satzzeichen, Zahlen und Buchstaben wie in diesem Satz benötigt wurden. Leider war die heutige seltsame Welt der globalen Interkommunikation und der sozialen Medien nicht vorgesehen, und es ist nicht ungewöhnlich, Englisch, العربية, 汉语, עִבְרִית, ελληνικά und ភាសាខ្មែរ im selben Dokument zu sehen (ich hoffe, ich habe kein altes gebrochen Browser).

Nehmen wir an, Joe Average ist ein Softwareentwickler. Er besteht darauf, dass er immer nur Englisch braucht und als solches nur ASCII verwenden möchte. Dies mag für den Benutzer Joe in Ordnung sein, für den Softwareentwickler Joe jedoch nicht . Ungefähr die Hälfte der Welt verwendet nicht-lateinische Zeichen, und die Verwendung von ASCII ist für diese Menschen wohl rücksichtslos. Darüber hinaus schließt er seine Software für eine große und wachsende Wirtschaft aus.

Daher wird ein umfassender Zeichensatz mit allen Sprachen benötigt. So kam Unicode. Es weist jedem Zeichen eine eindeutige Nummer zu, die als Codepunkt bezeichnet wird . Ein Vorteil von Unicode gegenüber anderen möglichen Sätzen besteht darin, dass die ersten 256 Codepunkte mit ISO-8859-1 und damit auch mit ASCII identisch sind . Darüber hinaus kann die überwiegende Mehrheit der häufig verwendeten Zeichen in einer Region, die als Basic Multilingual Plane (BMP) bezeichnet wird, nur durch zwei Bytes dargestellt werden . Jetzt ist eine Zeichenkodierung erforderlich, um auf diesen Zeichensatz zuzugreifen, und wenn die Frage gestellt wird, werde ich mich auf UTF-8 und UTF-16 konzentrieren.

Überlegungen zum Speicher

Wie viele Bytes geben Zugriff auf welche Zeichen in diesen Codierungen?

  • UTF-8:
    • 1 Byte: Standard-ASCII
    • 2 Bytes: Arabisch, Hebräisch, die meisten europäischen Schriften (insbesondere ohne Georgisch )
    • 3 Bytes: BMP
    • 4 Bytes: Alle Unicode-Zeichen
  • UTF-16:
    • 2 Bytes: BMP
    • 4 Bytes: Alle Unicode-Zeichen

Es ist jetzt erwähnenswert, dass Zeichen, die nicht im BMP enthalten sind, alte Skripte, mathematische Symbole, Musiksymbole und seltenere chinesische / japanische / koreanische (CJK) Zeichen enthalten.

Wenn Sie hauptsächlich mit ASCII-Zeichen arbeiten, ist UTF-8 sicherlich speichereffizienter. Wenn Sie jedoch hauptsächlich mit außereuropäischen Skripten arbeiten, kann die Verwendung von UTF-8 bis zu 1,5-mal weniger speichereffizient sein als UTF-16. Wenn Sie mit großen Textmengen wie großen Webseiten oder langen Word-Dokumenten arbeiten, kann dies die Leistung beeinträchtigen.

Grundlagen der Codierung

Hinweis: Wenn Sie wissen, wie UTF-8 und UTF-16 codiert sind, fahren Sie mit dem nächsten Abschnitt für praktische Anwendungen fort.

  • UTF-8: Für die Standard-ASCII-Zeichen (0-127) sind die UTF-8-Codes identisch. Dies macht UTF-8 ideal, wenn Abwärtskompatibilität mit vorhandenem ASCII-Text erforderlich ist. Andere Zeichen benötigen 2-4 Bytes. Dies erfolgt durch Reservieren einiger Bits in jedem dieser Bytes, um anzuzeigen, dass es Teil eines Mehrbytezeichens ist. Insbesondere soll das erste Bit jedes Bytes 1einen Konflikt mit den ASCII-Zeichen vermeiden.
  • UTF-16: Für gültige BMP-Zeichen ist die UTF-16-Darstellung einfach der Codepunkt. Für Nicht-BMP-Zeichen führt UTF-16 jedoch Ersatzpaare ein . In diesem Fall wird eine Kombination aus zwei Zwei-Byte-Abschnitten einem Nicht-BMP-Zeichen zugeordnet. Diese Zwei-Byte-Teile stammen aus dem BMP-Zahlenbereich, werden jedoch vom Unicode-Standard als ungültig als BMP-Zeichen garantiert. Da UTF-16 zwei Bytes als Grundeinheit hat, ist es außerdem von Endianness betroffen . Zum Ausgleich kann ein reserviertes Byte-Bestellzeichen am Anfang eines Datenstroms platziert werden, das die Endianität anzeigt. Wenn Sie also die UTF-16-Eingabe lesen und keine Endianness angegeben ist, müssen Sie dies überprüfen.

Wie zu sehen ist, sind UTF-8 und UTF-16 bei weitem nicht miteinander kompatibel. Wenn Sie also E / A ausführen, stellen Sie sicher, dass Sie wissen, welche Codierung Sie verwenden! Weitere Informationen zu diesen Codierungen finden Sie in den UTF-FAQ .

Praktische Überlegungen zur Programmierung

Zeichen- und Zeichenfolgendatentypen: Wie werden sie in der Programmiersprache codiert? Wenn es sich um Rohbytes handelt, können in dem Moment, in dem Sie versuchen, Nicht-ASCII-Zeichen auszugeben, einige Probleme auftreten. Auch wenn der Zeichentyp auf einer UTF basiert, bedeutet dies nicht, dass die Zeichenfolgen die richtige UTF sind. Sie können unzulässige Byte-Sequenzen zulassen. Im Allgemeinen müssen Sie eine Bibliothek verwenden, die UTF unterstützt, z. B. ICU für C, C ++ und Java. Wenn Sie etwas anderes als die Standardcodierung eingeben / ausgeben möchten, müssen Sie es in jedem Fall zuerst konvertieren.

Empfohlene / Standard- / dominante Codierungen: Wenn Sie die Wahl haben, welches UTF verwendet werden soll, ist es normalerweise am besten, die empfohlenen Standards für die Umgebung zu befolgen, in der Sie arbeiten. Beispielsweise ist UTF-8 im Web dominant und seit HTML5 wurde die empfohlene Kodierung . Umgekehrt basieren sowohl .NET- als auch Java-Umgebungen auf einem UTF-16-Zeichentyp. Verwirrenderweise (und fälschlicherweise) wird häufig auf die "Unicode-Codierung" verwiesen, die sich normalerweise auf die dominante UTF-Codierung in einer bestimmten Umgebung bezieht.

Bibliotheksunterstützung: Die von Ihnen verwendeten Bibliotheken unterstützen eine Art Codierung. Welcher? Unterstützen sie die Eckfälle? Da die Notwendigkeit die Mutter der Erfindung ist, unterstützen UTF-8-Bibliotheken im Allgemeinen 4-Byte-Zeichen ordnungsgemäß, da 1, 2 und sogar 3-Byte-Zeichen häufig auftreten können. Allerdings unterstützen nicht alle angeblichen UTF-16-Bibliotheken Ersatzpaare ordnungsgemäß, da sie sehr selten auftreten.

Zeichen zählen: In Unicode gibt es Kombinationszeichen . Beispielsweise bilden der Codepunkt U + 006E (n) und U + 0303 (eine kombinierende Tilde) ñ, aber der Codepunkt U + 00F1 bildet ñ. Sie sollten identisch aussehen, aber ein einfacher Zählalgorithmus gibt 2 für das erste Beispiel und 1 für das letztere zurück. Dies ist nicht unbedingt falsch, kann aber auch nicht das gewünschte Ergebnis sein.

Vergleich für Gleichheit: A, А und Α sehen gleich aus, aber sie sind lateinisch, kyrillisch und griechisch. Sie haben auch Fälle wie C und Ⅽ, einer ist ein Buchstabe, der andere eine römische Ziffer. Darüber hinaus müssen wir auch die kombinierenden Zeichen berücksichtigen. Weitere Informationen finden Sie unter Doppelte Zeichen in Unicode .

Ersatzpaare: Diese kommen bei SO häufig genug vor, daher werde ich nur einige Beispiellinks bereitstellen:

Andere?:

DPenner1
quelle
11
Ausgezeichnete Antwort, große Chancen für das Kopfgeld ;-) Persönlich würde ich hinzufügen, dass einige für UTF-8 als universelle Zeichenkodierung argumentieren , aber ich weiß, dass dies eine Meinung ist, die nicht unbedingt von allen geteilt wird.
Joachim Sauer
3
Zu diesem Zeitpunkt noch zu technisch für mich. Wie wird das Wort Hallo in einem Computer in UTF-8 und UTF-16 gespeichert?
Vorname Nachname
1
Können Sie näher erläutern, warum beispielsweise der BMP in UTF-8 3 Byte benötigt? Ich hätte gedacht, da der Maximalwert 0xFFFF (16 Bit) ist, würde der Zugriff nur 2 Bytes dauern.
Markieren Sie den
2
@mark Einige Bits sind für Codierungszwecke reserviert. Für einen Codepunkt, der in UTF-8 2 Bytes benötigt, gibt es 5 reservierte Bits, so dass nur 11 Bits zur Auswahl eines Codepunkts übrig bleiben. U + 07FF ist der höchste Codepunkt, der in 2 Bytes dargestellt werden kann.
DPenner1
1
Übrigens - ASCII definiert nur 128 Codepunkte und verwendet nur 7 Bits zur Darstellung. Es ist ISO-8859-1 / ISO-8859-15, das 256 Codepunkte definiert und 8 Bit zur Darstellung verwendet. Die ersten 128 Codepunkte in all diesen 3 sind gleich.
Tuxdude
67
  • Unicode
    • ist eine Reihe von Zeichen, die auf der ganzen Welt verwendet werden
  • UTF-8
    • Eine Zeichenkodierung, die alle möglichen Zeichen (als Codepunkte bezeichnet) in Unicode kodieren kann.
    • Codeeinheit ist 8-Bit
    • Verwenden Sie ein bis vier Codeeinheiten, um Unicode zu codieren
    • 00100100 für " $ " (ein 8-Bit); 11000010 10100010 für " ¢ " (zwei 8-Bit); 11100010 10000010 10101100 für " " (drei 8-Bit)
  • UTF-16
    • eine andere Zeichenkodierung
    • Codeeinheit ist 16-Bit
    • Verwenden Sie ein bis zwei Codeeinheiten, um Unicode zu codieren
    • 00000000 00100100 für " $ " (ein 16-Bit); 11011000 01010010 11011111 01100010 für " 𤭢 " (zwei 16-Bit)
wengeezhang
quelle
1
Kurz und präzise
Aritra Chatterjee
30

Unicode ist ein ziemlich komplexer Standard. Hab keine Angst, aber sei bereit für etwas Arbeit! [2]

Da immer eine glaubwürdige Ressource benötigt wird, der offizielle Bericht jedoch umfangreich ist, empfehle ich Folgendes zu lesen:

  1. Das absolute Minimum, das jeder Softwareentwickler unbedingt und positiv über Unicode und Zeichensätze wissen muss (keine Ausreden!) Eine Einführung von Joel Spolsky, CEO von Stack Exchange.
  2. Zum BMP und darüber hinaus! Ein Tutorial von Eric Muller, damals technischer Direktor, später Vizepräsident beim Unicode-Konsortium. (Die ersten 20 Folien und Sie sind fertig)

Eine kurze Erklärung:

Computer lesen Bytes und Menschen lesen Zeichen. Daher verwenden wir Codierungsstandards , um Zeichen Bytes zuzuordnen. ASCII war der erste weit verbreitete Standard, deckt jedoch nur Latein ab (7 Bit / Zeichen können 128 verschiedene Zeichen darstellen). Unicode ist ein Standard mit dem Ziel, alle möglichen Zeichen auf der Welt abzudecken (kann bis zu 1.114.112 Zeichen enthalten, dh maximal 21 Bit / Zeichen. Der aktuelle Unicode 8.0 spezifiziert insgesamt 120.737 Zeichen, und das ist alles).

Der Hauptunterschied besteht darin, dass ein ASCII-Zeichen in ein Byte (8 Bit) passen kann, die meisten Unicode-Zeichen jedoch nicht. Daher werden Codierungsformen / -schemata (wie UTF-8 und UTF-16) verwendet, und das Zeichenmodell sieht folgendermaßen aus:

Jedes Zeichen hat eine Aufzählungsposition von 0 bis 1.114.111 (hex: 0-10FFFF), die als Codepunkt bezeichnet wird .
Ein Codierungsformular ordnet einen Codepunkt einer Codeeinheitssequenz zu. Eine Codeeinheit ist die Art und Weise, wie Zeichen im Speicher organisiert werden sollen, 8-Bit-Einheiten, 16-Bit-Einheiten usw. UTF-8 verwendet 1 bis 4 Einheiten mit 8 Bit, und UTF-16 verwendet 1 oder 2 Einheiten mit 16 Bit, um den gesamten Unicode mit maximal 21 Bit abzudecken. Einheiten verwenden Präfixe, damit Zeichengrenzen erkannt werden können, und mehr Einheiten bedeuten mehr Präfixe, die Bits belegen. Obwohl UTF-8 1 Byte für das lateinische Skript verwendet, benötigt es 3 Bytes für spätere Skripte in der mehrsprachigen Basisebene, während UTF-16 für all diese Skripte 2 Byte verwendet. Und das ist ihr Hauptunterschied.
Zuletzt ein Kodierungsschema (wie UTF-16BE oder UTF-16LE) ordnet (serialisiert) eine Codeeinheitssequenz einer Bytesequenz zu.

Zeichen: π
Codepunkt: U + 03C0-
Codierungsformen (Codeeinheiten):
      UTF-8: CF 80
      UTF-16: 03C0-
Codierungsschemata (Bytes):
      UTF-8: CF 80
      UTF-16BE: 03 C0
      UTF-16LE: C0 03

Tipp: Eine hexadezimale Ziffer steht für 4 Bit, eine zweistellige hexadezimale Zahl für ein Byte.
Schauen Sie sich auch die Flugzeugkarten in Wikipedia an, um ein Gefühl für das Zeichensatzlayout zu bekommen

Neuron
quelle
19

Ursprünglich sollte Unicode eine 16-Bit-Codierung mit fester Breite (UCS-2) haben. Frühe Anwender von Unicode wie Java und Windows NT bauten ihre Bibliotheken auf 16-Bit-Zeichenfolgen auf.

Später wurde der Umfang von Unicode um historische Zeichen erweitert, für die mehr als die 65.536 Codepunkte erforderlich wären, die eine 16-Bit-Codierung unterstützen würde. Damit die zusätzlichen Zeichen auf Plattformen dargestellt werden können, auf denen UCS-2 verwendet wurde, wurde die UTF-16-Codierung eingeführt. Es verwendet "Ersatzpaare", um Zeichen in den zusätzlichen Ebenen darzustellen.

In der Zwischenzeit verwendeten viele ältere Software- und Netzwerkprotokolle 8-Bit-Zeichenfolgen. UTF-8 wurde entwickelt, damit diese Systeme Unicode unterstützen können, ohne breite Zeichen verwenden zu müssen. Es ist abwärtskompatibel mit 7-Bit-ASCII.

dan04
quelle
3
Es ist erwähnenswert, dass Microsoft noch bezieht sich auf UTF-16 als Unicode, um die Verwirrung hinzuzufügen. Die beiden sind nicht gleich.
Mark Ransom
15

Dieser Artikel erklärt alle Details http://kunststube.net/encoding/

SCHREIBEN AN BUFFER

Wenn Sie in ein 4-Byte-Puffer-Symbol mit UTF8-Codierung schreiben, sieht Ihre Binärdatei folgendermaßen aus:

00000000 11100011 10000001 10000010

Wenn Sie in ein 4-Byte-Puffer-Symbol mit UTF16-Codierung schreiben, sieht Ihre Binärdatei folgendermaßen aus:

00000000 00000000 00110000 01000010

Wie Sie sehen können, wirkt sich dies je nach der Sprache, die Sie in Ihren Inhalten verwenden würden, entsprechend auf Ihr Gedächtnis aus.

zB Für dieses bestimmte Symbol: Die UTF16-Codierung ist effizienter, da wir 2 freie Bytes für das nächste Symbol verwenden können. Dies bedeutet jedoch nicht, dass Sie UTF16 für das japanische Alphabet verwenden müssen.

LESEN AUS DEM PUFFER

Wenn Sie nun die obigen Bytes lesen möchten, müssen Sie wissen, in welche Codierung es geschrieben wurde, und es wieder korrekt decodieren.

Beispiel: Wenn Sie dies dekodieren: 00000000 11100011 10000001 10000010 in UTF16-Codierung, erhalten Sie am Ende nicht

Hinweis: Codierung und Unicode sind zwei verschiedene Dinge. Unicode ist die große (Tabelle), wobei jedes Symbol einem eindeutigen Codepunkt zugeordnet ist. zB Symbol (Buchstabe) hat einen (Codepunkt) : 30 42 (hex). Die Codierung hingegen ist ein Algorithmus, der Symbole beim Speichern auf Hardware auf eine geeignetere Weise konvertiert.

30 42 (hex) - > UTF8 encoding - > E3 81 82 (hex), which is above result in binary.

30 42 (hex) - > UTF16 encoding - > 30 42 (hex), which is above result in binary.

Geben Sie hier die Bildbeschreibung ein

InGeek
quelle
11

Unicode ist ein Standard, der die Zeichen in allen Sprachen einem bestimmten numerischen Wert zuordnet, der als Codepunkte bezeichnet wird . Der Grund dafür ist, dass unterschiedliche Codierungen mit demselben Satz von Codepunkten möglich sind.

UTF-8 und UTF-16 sind zwei solche Codierungen. Sie nehmen Codepunkte als Eingabe und codieren sie mit einer genau definierten Formel, um die codierte Zeichenfolge zu erzeugen.

Die Auswahl einer bestimmten Codierung hängt von Ihren Anforderungen ab. Unterschiedliche Codierungen haben unterschiedliche Speicheranforderungen. Abhängig von den Zeichen, mit denen Sie sich befassen, sollten Sie die Codierung auswählen, die die geringsten Folgen von Bytes zum Codieren dieser Zeichen verwendet.

Weitere Informationen zu Unicode, UTF-8 und UTF-16 finden Sie in diesem Artikel.

Was jeder Programmierer über Unicode wissen sollte

Kishu Agarwal
quelle
9

Warum Unicode? Weil ASCII nur 127 Zeichen hat. Die von 128 bis 255 unterscheiden sich in verschiedenen Ländern, deshalb gibt es Codepages. Sie sagten also, wir könnten bis zu 1114111 Zeichen haben. Wie speichert man den höchsten Codepunkt? Sie müssen es mit 21 Bit speichern, also verwenden Sie ein DWORD mit 32 Bit, wobei 11 Bit verschwendet werden. Wenn Sie also ein DWORD zum Speichern eines Unicode-Zeichens verwenden, ist dies der einfachste Weg, da der Wert in Ihrem DWORD genau mit dem Codepunkt übereinstimmt. Aber DWORD-Arrays sind natürlich größer als WORD-Arrays und natürlich sogar größer als BYTE-Arrays. Deshalb gibt es nicht nur utf-32, sondern auch utf-16. Aber utf-16 bedeutet einen WORD-Stream, und ein WORD hat 16 Bits. Wie kann also der höchste Codepunkt 1114111 in ein WORD passen? Es kann nicht! Also setzen sie alles, was höher als 65535 ist, in ein DWORD, das sie als Ersatzpaar bezeichnen. Ein solches Ersatzpaar besteht aus zwei WORTEN und kann durch Betrachten der ersten 6 Bits erkannt werden. Was ist also mit utf-8? Es ist ein Byte-Array oder ein Byte-Stream, aber wie kann der höchste Codepunkt 1114111 in ein Byte passen? Es kann nicht! Okay, also haben sie auch ein DWORD eingegeben, oder? Oder vielleicht ein WORT, oder? Fast richtig! Sie haben utf-8-Sequenzen erfunden, was bedeutet, dass jeder Codepunkt höher als 127 in eine 2-Byte-, 3-Byte- oder 4-Byte-Sequenz codiert werden muss. Beeindruckend! Aber wie können wir solche Sequenzen erkennen? Nun, alles bis zu 127 ist ASCII und ist ein einzelnes Byte. Was mit 110 beginnt, ist eine Zwei-Byte-Sequenz, was mit 1110 beginnt, ist eine Drei-Byte-Sequenz und was mit 11110 beginnt, ist eine Vier-Byte-Sequenz. Die restlichen Bits dieser sogenannten "Startbytes" gehören zum Codepunkt. Nun müssen je nach Reihenfolge folgende Bytes folgen. Ein nachfolgendes Byte beginnt mit 10, Die verbleibenden Bits sind 6 Bits Nutzlastbits und gehören zum Codepunkt. Verketten Sie die Nutzdatenbits des Startbytes und der folgenden Bytes, und Sie erhalten den Codepunkt. Das ist die ganze Magie von utf-8.

hell
quelle
3
utf-8-Beispiel für ein in utf-8-3-Byte-Sequenz dekodiertes € (Euro) -Zeichen: E2 = 11100010 82 = 10000010 AC = 10101100 Wie Sie sehen können, beginnt E2 mit 1110, also ist dies eine Drei-Byte-Sequenz , 82 sowie AC beginnen mit 10, also folgen diese Bytes. Jetzt verketten wir die "Nutzlastbits": 0010 + 000010 + 101100 = 10000010101100, die dezimal 8364 ist. 8364 muss also der Codepunkt für das Euro-Zeichen sein.
hell
5

ASCII - Die Software weist einem bestimmten Zeichen nur 8-Bit-Byte im Speicher zu. Es funktioniert gut für englische und übernommene (Lehnwörter wie Fassaden) Zeichen, da die entsprechenden Dezimalwerte im Dezimalwert unter 128 fallen. Beispiel C Programm.

UTF-8 - Die Software weist einem bestimmten Zeichen 1 bis 4 variable 8-Bit-Bytes zu. Was bedeutet hier Variable? Angenommen, Sie senden das Zeichen 'A' über Ihre HTML-Seiten im Browser (HTML ist UTF-8). Der entsprechende Dezimalwert von A ist 65, wenn Sie ihn in eine Dezimalzahl konvertieren, wird er zu 01000010. Dies erfordert nur 1 Byte 1 Byte Speicher wird auch für spezielle englische Zeichen wie 'ç' in einer Wortfassade zugewiesen. Wenn Sie jedoch europäische Zeichen speichern möchten, sind 2 Byte erforderlich, sodass Sie UTF-8 benötigen. Wenn Sie sich jedoch für asiatische Zeichen entscheiden, benötigen Sie mindestens 2 Byte und höchstens 4 Byte. Ebenso benötigen Emojis 3 bis 4 Bytes. UTF-8 wird alle Ihre Bedürfnisse lösen.

UTF-16 weist mindestens 2 Bytes und höchstens 4 Bytes pro Zeichen zu. Es werden keine 1 oder 3 Bytes zugewiesen. Jedes Zeichen wird entweder in 16 Bit oder 32 Bit dargestellt.

Warum gibt es dann UTF-16? Ursprünglich war Unicode 16 Bit, nicht 8 Bit. Java hat die ursprüngliche Version von UTF-16 übernommen.

Kurz gesagt, Sie benötigen UTF-16 nirgendwo, es sei denn, es wurde bereits von der Sprache oder Plattform übernommen, an der Sie arbeiten.

Von Webbrowsern aufgerufene Java-Programme verwenden UTF-16, aber der Webbrowser sendet Zeichen mit UTF-8.

Siva
quelle
"Sie benötigen UTF-16 nirgendwo, es sei denn, es wurde bereits von der Sprache oder Plattform übernommen.": Dies ist ein guter Punkt, aber hier ist eine nicht inklusive Liste: JavaScript, Java, .NET, SQL NCHAR, SQL NVARCHAR , VB4, VB5, VB6, VBA, VBScript, NTFS, Windows API….
Tom Blodget
2

UTF steht für Unicode Transformation Format. Grundsätzlich gibt es in der heutigen Welt Skripte, die in Hunderten anderer Sprachen geschrieben sind, Formate, die nicht durch das zuvor verwendete grundlegende ASCII abgedeckt sind. Daher entstand UTF.

UTF-8 verfügt über Zeichencodierungsfunktionen und seine Codeeinheit beträgt 8 Bit, während die für UTF-16 16 Bit beträgt.

Krishna Ganeriwal
quelle