2009-08-13 5 views

Antwort

7

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.

+0

Das war die hilfreiche Referenz. Aber der Grund für diese Änderung wird nicht erwähnt. War es nur eine Laune des Komitees? –

+2

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. –

+1

Es ist im Vorwort (http://www.unicode.org/versions/Unicode3.0.0/Preface.pdf), aber nur kurz erwähnt. –

4

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 :-)

+1

Sie mussten nicht mal eine Münze werfen: 'x' ('/ɛks/') klingt mehr nach' hex' als nach 'h' ('/eɪtʃ/'). –

+0

@ FrédéricHamidi, aber VB verwendet '& hB9', Pascal verwendet' $ B9', Intel Syntax Assembly verwendet '0B9h' –

12

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-Ziffern
+0

Danke für diese Erklärung @Jim. Es ist sehr hilfreich. Ich würde diese verlinkten Dokumente betrachten. –

+1

http://unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html unterstützt auch U + HHHH und U-HHHHHHHH. –