Ich weiß, diese Frage ist alt und hat bereits eine akzeptierte Antwort, aber ich möchte ein paar Beispiele anführen (in der Hoffnung, dass sie für jemanden nützlich sind).
Soweit ich weiß, benötigten alte ASCII-Zeichen ein Byte pro Zeichen.
Richtig. Da es sich bei ASCII um eine 7-Bit-Kodierung handelt, werden 128 Codes unterstützt (von denen 95 druckbar sind), so dass nur ein halbes Byte verwendet wird (wenn das überhaupt Sinn macht).
Wie viele Bytes benötigt ein Unicode-Zeichen?
Unicode ordnet die Zeichen lediglich den Codepunkten zu. Er definiert nicht, wie sie zu kodieren sind. Eine Textdatei enthält keine Unicode-Zeichen, sondern Bytes/Octets, die Unicode-Zeichen darstellen können.
Ich gehe davon aus, dass ein Unicode-Zeichen alle möglichen Zeichen enthalten kann. Zeichen einer beliebigen Sprache enthalten kann - liege ich da richtig?
Nein. Aber fast. Also im Grunde ja. Aber immer noch nein.
Wie viele Bytes werden also pro Zeichen benötigt?
Dasselbe wie bei Ihrer 2. Frage.
Und was bedeuten UTF-7, UTF-6, UTF-16 usw.? Sind sie eine Art Unicode Versionen?
Nein, das sind Kodierungen. Sie definieren, wie Bytes/Octets Unicode-Zeichen darstellen sollen.
Hier ein paar Beispiele. Wenn einige davon in Ihrem Browser nicht angezeigt werden können (wahrscheinlich weil die Schriftart sie nicht unterstützt), gehen Sie zu http://codepoints.net/U+1F6AA
(ersetzen 1F6AA
mit dem Codepunkt in Hexadezimalzeichen), um ein Bild zu sehen.
-
- U+0061 LATEINISCHER KLEINBUCHSTABE A:
a
- NR.: 97
- UTF-8: 61
- UTF-16: 00 61
-
- U+00A9 COPYRIGHT-ZEICHEN:
©
- Nº: 169
- UTF-8: C2 A9
- UTF-16: 00 A9
- U+00AE EINGETRAGENES ZEICHEN:
®
- Nº: 174
- UTF-8: C2 AE
- UTF-16: 00 AE
-
- U+1337 ÄTHIOPISCHE SILBE PHWA:
- Nº: 4919
- UTF-8: E1 8C B7
- UTF-16: 13 37
- U+2014 EM-BINDESTRICH:
—
- NR.: 8212
- UTF-8: E2 80 94
- UTF-16: 20 14
- U+2030 PROMILLEZEICHEN:
‰
- NR.: 8240
- UTF-8: E2 80 B0
- UTF-16: 20 30
- U+20AC EURO-ZEICHEN:
€
- NR.: 8364
- UTF-8: E2 82 AC
- UTF-16: 20 AC
- U+2122 MARKENZEICHEN:
™
- NR.: 8482
- UTF-8: E2 84 A2
- UTF-16: 21 22
- U+2603 SCHNEEMANN:
- NR.: 9731
- UTF-8: E2 98 83
- UTF-16: 26 03
- U+260E SCHWARZES TELEFON:
- NR.: 9742
- UTF-8: E2 98 8E
- UTF-16: 26 0E
- U+2614 REGENSCHIRM MIT REGENTROPFEN:
- NR.: 9748
- UTF-8: E2 98 94
- UTF-16: 26 14
- U+263A WEISSES LÄCHELNDES GESICHT:
- NR.: 9786
- UTF-8: E2 98 BA
- UTF-16: 26 3A
- U+2691 SCHWARZE FLAGGE:
- NR.: 9873
- UTF-8: E2 9A 91
- UTF-16: 26 91
- U+269B ATOM-SYMBOL:
- NR.: 9883
- UTF-8: E2 9A 9B
- UTF-16: 26 9B
- U+2708 FLUGZEUG:
- NR.: 9992
- UTF-8: E2 9C 88
- UTF-16: 27 08
- U+271E SCHATTIERTES WEISSES LATEINISCHES KREUZ:
- Nº: 10014
- UTF-8: E2 9C 9E
- UTF-16: 27 1E
- U+3020 POSTSTEMPEL GESICHT:
- Nº: 12320
- UTF-8: E3 80 A0
- UTF-16: 30 20
- U+8089 CJK UNIFIED IDEOGRAPH-8089:
- Nº: 32905
- UTF-8: E8 82 89
- UTF-16: 80 89
-
- U+1F4A9 EIN HAUFEN KACKE:
- Nº: 128169
- UTF-8: F0 9F 92 A9
- UTF-16: D8 3D DC A9
- U+1F680 RAKETE:
- Nº: 128640
- UTF-8: F0 9F 9A 80
- UTF-16: D8 3D DE 80
Okay, ich lasse mich hinreißen...
Lustige Fakten:
1 Stimmen
de.wikipedia.org/wiki/Vergleich_von_Unicode_Kodierungen
18 Stimmen
Tut mir leid, es gibt keine einfache Antwort. Ich finde die ganze Sache ein bisschen verwirrend. Es wurde behauptet, dass Unicode zwei Bytes benötigt und alle Zeichen darstellen kann, aber es hat sich herausgestellt, dass zwei Bytes nicht ganz ausreichend sind.
14 Stimmen
"Einfache Antwort": Ein Unicode-Zeichen benötigt 1-4 Bytes. Unicode deckt viele Sprachen ab, aber nicht alle. Als ich das letzte Mal nachgesehen habe, war Klingonisch zum Beispiel kein offizieller Unicode-Zeichensatz.
10 Stimmen
Klingonisch ist nicht Teil des Unicode-Standards selbst, nein. Es verwendet stattdessen die Private Use Area von Unicode (U+F8D0 - U+F8FF).
2 Stimmen
Retterfrage - danke. Meine Situation ist die Speicherung von Daten über SCORM 1.2 konforme LMSs... der Standard für SCORM 1.2 'cmi.suspend_data' ist 4096 Bytes Daten, von denen ein früherer Entwickler annahm, dass wir 4096 Zeichen speichern können. Oh Mann, da hat er sich geirrt - ich habe gerade herausgefunden, warum unsere Lesezeichen bei langen Kursen nicht funktionieren. Jetzt weiß ich, dass wir UTF-8 verwenden und daher 4 Bytes pro Zeichen benötigen, was uns 1024 Zeichen gibt.
1 Stimmen
Eine Menge von Zeichen menschlicher Sprachen sind nicht in Unicode enthalten.
0 Stimmen
@NicolasBarbulesco Zum Beispiel?
0 Stimmen
Das hat mir geholfen: gammon.com.au/unicode