Warum werden Unicode-Codepunkte als angezeigt?U+
<codepoint>
Stellt beispielsweise U+2202
das Zeichen ∂ dar .
Warum nicht U-
(Bindestrich oder Bindestrich) oder irgendetwas anderes?
Antworten:
Die Zeichen "U +" sind eine ASCII-bezogene Version des MULTISET UNION "⊎" U + 228E-Zeichens (das U-ähnliche Vereinigungssymbol mit einem Pluszeichen), das Unicode als Vereinigung von Zeichensätzen symbolisieren sollte. Siehe Kenneth Whistlers Erklärung in der Unicode-Mailingliste .
Der Unicode-Standard benötigt eine Notation, um über Codepunkte und Zeichennamen zu sprechen. Es übernahm die Konvention von "U +", gefolgt von vier oder mehr hexadezimalen Ziffern, mindestens bis zu 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 bietet eine Möglichkeit, hexadezimale Ziffern als Unicode-Codepunkte anstelle von Oktetten oder uneingeschränkten 16-Bit-Mengen oder Zeichen in anderen Codierungen zu markieren. Es funktioniert gut beim Ausführen von Text. Das "U" schlägt "Unicode" vor.
Meine persönliche Erinnerung an die Diskussionen der Softwareindustrie Anfang der 90er Jahre über Unicode ist, dass eine Konvention von "U +" gefolgt von vier hexadezimalen Ziffern während der Ära von Unicode 1.0 und Unicode 2.0 üblich war. Zu dieser Zeit wurde Unicode als 16-Bit-System angesehen. Mit dem Aufkommen von Unicode 3.0 und der Codierung von Zeichen an Codepunkten von U + 010000 und höher wurde die Konvention von "U-" gefolgt von sechs hexadezimalen Ziffern verwendet, 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 Leute verwenden 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 Mailinglistennachrichten aus den 90er Jahren sollten Beweise dafür haben, aber ich kann nicht bequem auf welche verweisen. Der Unicode-Standard 2.0 erklärte: "Unicode-Zeichencodes haben eine einheitliche Breite von 16 Bit." (S. 2-3). Es legte seine Konvention fest, dass "ein einzelner Unicode-Wert als U + nnnn ausgedrückt wird , wobei nnnn eine vierstellige Zahl in hexadezimaler Notation ist" (S. 1-5). Ersatzwerte wurden zugewiesen, aber über U + FFFF wurden keine Zeichencodes definiert, und UTF-16 oder UTF-32 wurden nicht erwähnt. Es wurde "U +" mit vier Ziffern verwendet. Der Unicode-Standard 3.0.0, veröffentlicht im Jahr 2000, definierte UTF-16 (S. 46-47) und diskutierte Codepunkte von U + 010000 und höher. Es wurde "U +" mit vier Ziffern an einigen Stellen und mit sechs Ziffern an anderen Stellen verwendet. Die festeste Spur, die ich gefunden habe, war in The Unicode Standard , Version 6.0.0 , wo eine Tabelle mit BNF-Syntaxnotation Symbole U+HHHH
und U-HHHHHHHH
(S. 559) definiert.
Die "U +" - Notation ist nicht die einzige Konvention zur Darstellung von Unicode-Codepunkten oder Codeeinheiten. Beispielsweise definiert die Python-Sprache die folgenden Zeichenfolgenliterale :
u'xyz'
um eine Unicode-Zeichenfolge anzugeben, eine Folge von Unicode-Zeichen'\uxxxx'
um eine Zeichenfolge mit einem Unicode-Zeichen anzugeben, das durch vier hexadezimale Ziffern gekennzeichnet ist'\Uxxxxxxxx'
um eine Zeichenfolge mit einem Unicode-Zeichen anzugeben, das durch acht hexadezimale Ziffern gekennzeichnet istDies hängt davon ab, von welcher Version des Unicode-Standards Sie sprechen. Aus Wikipedia :
Ältere Versionen des Standards verwendeten ähnliche Notationen, jedoch mit leicht unterschiedlichen Regeln. Beispielsweise verwendete Unicode 3.0 "U-" gefolgt von acht Ziffern und erlaubte, dass "U +" nur mit genau vier Ziffern verwendet wurde, um eine Codeeinheit und keinen Codepunkt anzuzeigen.
Es ist nur eine Konvention, um 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 die Münze so geworfen wurde :-)
x
( /ˈɛks/
) klingt eher hex
als h
( /eɪtʃ/
) der Fall ist.
&hB9
, Pascal verwendet $B9
, Intel Syntax Assembly verwendet0B9h