Warum erscheinen Unicode-Codepunkte als U+
<codepoint>
? Beispiel: U+2202
steht für das Zeichen .Warum wird 'U +' verwendet, um einen Unicode-Codepunkt anzugeben?
Warum nicht U-
(Strich oder Bindestrich) oder irgendetwas anderes?
Warum erscheinen Unicode-Codepunkte als U+
<codepoint>
? Beispiel: U+2202
steht für das Zeichen .Warum wird 'U +' verwendet, um einen Unicode-Codepunkt anzugeben?
Warum nicht U-
(Strich oder Bindestrich) oder irgendetwas anderes?
Die Zeichen "U +" sind eine ASCIIfied-Version des MULTISET UNION "⊎" U + 228E Zeichens (das U-ähnliche Vereinigung Symbol mit einem Pluszeichen darin), die sollte Unicode als die Vereinigung von Zeichensätzen symbolisieren. Siehe Kenneth Whistler’s explanation in the Unicode mailing list.
Es hängt davon ab, welche Version des Unicode-Standards Sie sprechen. Von Wikipedia:
älteren Versionen des Standard verwendeten ähnliche Bezeichnungen, aber mit leicht unterschiedlichen Regeln. Zum Beispiel, Unicode 3.0 verwendet "U-" gefolgt von acht Ziffern, und erlaubt "U +" nur mit genau vier Ziffern zu verwendet werden, geben Sie eine Code-Einheit, kein Code Punkt.
Es ist nur eine Konvention zu zeigen, dass der Wert Unicode ist. Ein bisschen wie '0x' oder 'h' für Hex-Werte (0xB9
oder B9h
). Warum 0xB9
und nicht 0hB9
(oder &hB9
oder $B9
)? Nur weil das ist, wie die Münze umgedreht :-)
Sie mussten nicht mal eine Münze werfen: 'x' ('/ɛks/') klingt mehr nach' hex' als nach 'h' ('/eɪtʃ/'). –
@ FrédéricHamidi, aber VB verwendet '& hB9', Pascal verwendet' $ B9', Intel Syntax Assembly verwendet '0B9h' –
Der Unicode-Standard benötigt eine Notation, um über Codepunkte und Charakternamen zu sprechen. Es folgte die Konvention "U +", gefolgt von vier oder mehr hexadezimalen Ziffern, mindestens so weit zurück wie The Unicode Standard, version 2.0.0, veröffentlicht 1996 (Quelle: archivierte PDF-Kopie auf der Unicode Consortium-Website).
Die Notation "U +" ist nützlich. Es gibt eine Möglichkeit, hexadezimale Ziffern als Unicode-Codepunkte anstelle von Oktetten oder unbeschränkten 16-Bit-Mengen oder Zeichen in anderen Codierungen zu markieren. Es funktioniert gut im laufenden Text. Das "U" schlägt "Unicode" vor.
Meine persönliche Erinnerung aus den frühen 1990er Jahren der Software-Industrie Diskussionen über Unicode, ist, dass eine Konvention von "U +" gefolgt von vier Hexadezimalziffern während der Unicode 1.0 und Unicode 2.0 Ära üblich war. Zu dieser Zeit wurde Unicode als 16-Bit-System angesehen. Mit dem Aufkommen von Unicode 3.0 und der Kodierung von Zeichen an Codepunkten von U + 010000 und darüber kam die Konvention von "U-", gefolgt von sechs hexadezimalen Ziffern, zum Einsatz, um insbesondere die zusätzlichen zwei Ziffern in der Zahl hervorzuheben. (Oder vielleicht war es umgekehrt, eine Verschiebung von "U-" zu "U +".) Nach meiner Erfahrung ist die "U +" Konvention jetzt viel häufiger als die "U-" Konvention, und nur wenige Menschen nutzen die Differenz zwischen "U +" und "U-", um die Anzahl der Ziffern anzugeben.
Ich konnte jedoch keine Dokumentation der Verschiebung von "U +" zu "U-" finden. Archivierte Mailing-Listen-Nachrichten aus den 1990er Jahren sollten Beweise dafür haben, aber ich kann nicht auf irgendeinen verweisen. Die Unicode-Standard 2.0 erklärt, "Unicode-Zeichencodes haben eine einheitliche Breite von 16 Bit." (S. 2-3). Sie legte ihre Konvention fest, dass "ein individueller Unicode-Wert als U + nnnn ausgedrückt wird, wobei nnnn eine vierstellige Zahl in hexadezimaler Schreibweise ist" (S. 1-5).Ersatzwerte wurden zugewiesen, über U + FFFF wurden jedoch keine Zeichencodes definiert und UTF-16 oder UTF-32 wurden nicht erwähnt. Es verwendete "U +" mit vier Ziffern. The Unicode Standard 3.0.0, im Jahr 2000 veröffentlicht, definierte UTF-16 (S. 46-47) und diskutierte Codepunkte von U + 010000 und höher. Es verwendete "U +" mit vier Ziffern an einigen Stellen und mit sechs Ziffern an anderen Orten. Die sicherste Spur, die ich gefunden habe, war in , wo eine Tabelle der BNF-Syntaxnotation die Symbole U+HHHH
und U-HHHHHHHH
definiert (S. 559).
Die Notation "U +" ist nicht die einzige Konvention zur Darstellung von Unicode-Codestellen oder Code-Einheiten. die Python language defines the following string literals Zum Beispiel:
u'xyz'
, um anzuzeigen, eine Unicode-Zeichenfolge, eine Folge von Unicode-Zeichen'\uxxxx'
einen String mit einem Unicode-Zeichen durch vier hexadezimale Ziffern bezeichnet, um anzuzeigen,'\Uxxxxxxxx'
um eine Zeichenfolge anzuzeigen, mit ein Unicode-Zeichen mit acht Hex-ZiffernDanke für diese Erklärung @Jim. Es ist sehr hilfreich. Ich würde diese verlinkten Dokumente betrachten. –
http://unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html unterstützt auch U + HHHH und U-HHHHHHHH. –
Das war die hilfreiche Referenz. Aber der Grund für diese Änderung wird nicht erwähnt. War es nur eine Laune des Komitees? –
Ich sehe die "U-" Konvention weder in [Unicode Standard 3.0.0] (http://www.unicode.org/versions/Unicode3.0.0/) oder [The Unicode Standard 2.0.0] (http://www.unicode.org/versions/Unicode2.0.0/) wie auf der Website des Unicode-Konsortiums archiviert. Ich denke, Wikipedia ist hier falsch. –
Es ist im Vorwort (http://www.unicode.org/versions/Unicode3.0.0/Preface.pdf), aber nur kurz erwähnt. –