2009-08-13 16 views

Respuesta

108

Los caracteres "U +" son una versión ASCIIfied del carácter MULTISET UNION "⊎" U + 228E (el símbolo de unión tipo U con un signo más dentro), que estaba destinado a simbolizar Unicode como la unión de conjuntos de caracteres. Ver Kenneth Whistler’s explanation in the Unicode mailing list.

7

Depende de la versión del estándar Unicode de la que esté hablando. De Wikipedia:

Las versiones más antiguas del estándar utilizado notaciones similares, pero con ligeramente reglas diferentes. Por ejemplo, Unicode 3.0 usó "U-" seguido de ocho dígitos, y se permitió que "U +" se utilizara solo con exactamente cuatro dígitos para indicar una unidad de código, no un código punto.

+0

Esa fue la referencia útil. Pero la razón de ese cambio no se menciona. ¿Fue solo un capricho del comité? –

+2

No veo la convención "U" en [El estándar Unicode 3.0.0] (http://www.unicode.org/versions/Unicode3.0.0/) o [El estándar Unicode 2.0.0] (http://www.unicode.org/versions/Unicode2.0.0/) tal como está archivado en el sitio web del Consorcio Unicode. Creo que Wikipedia está mal aquí. –

+1

Está en el prefacio (http://www.unicode.org/versions/Unicode3.0.0/Preface.pdf), pero solo se menciona brevemente. –

4

Es solo una convención para mostrar que el valor es Unicode. Un poco como '0x' o 'h' para valores hexadecimales (0xB9 o B9h). ¿Por qué 0xB9 y no 0hB9 (o &hB9 o $B9)? Sólo porque así es como se volcó la moneda :-)

+1

Ni siquiera tuvieron que lanzar una moneda: 'x' ('/ɛks/') suena más como' hex' que 'h' ('/eɪtʃ/'). –

+0

@ FrédéricHamidi pero VB usa '& hB9', Pascal usa' $ B9', el ensamblaje de sintaxis de Intel usa '0B9h' –

12

El estándar Unicode necesita alguna notación para hablar sobre los puntos de código y los nombres de los personajes. Adoptó la convención de "U +" seguida de cuatro o más dígitos hexadecimales por lo menos tan atrás como The Unicode Standard, version 2.0.0, publicado en 1996 (fuente: copia archivada en PDF en el sitio web del Consorcio Unicode).

La notación "U +" es útil. Proporciona una forma de marcar dígitos hexadecimales como puntos de código Unicode, en lugar de octetos, cantidades de 16 bits sin restricciones o caracteres en otras codificaciones. Funciona bien en la ejecución de texto. La "U" sugiere "Unicode".

Mi recuerdo personal de las discusiones de la industria del software de principios de los 90 sobre Unicode es que una convención de "U +" seguida de cuatro dígitos hexadecimales era común durante la era Unicode 1.0 y Unicode 2.0. En ese momento, Unicode era visto como un sistema de 16 bits. Con el advenimiento de Unicode 3.0 y la codificación de caracteres en los puntos de código de U + 010000 y superiores, se utilizó la convención de "U-" seguida de seis dígitos hexadecimales, específicamente para resaltar los dos dígitos adicionales en el número. (O tal vez fue al revés, un cambio de "U" a "U +"). En mi experiencia, la convención "U +" ahora es mucho más común que la convención "U", y pocas personas usan el diferencia entre "U +" y "U-" para indicar el número de dígitos.

No pude encontrar documentación del cambio de "U +" a "U-", sin embargo. Los mensajes archivados de la lista de correo de la década de 1990 deberían tener evidencia de ello, pero no puedo señalarlos convenientemente. El Unicode Standard 2.0 declarado, "los códigos de caracteres Unicode tienen un ancho uniforme de 16 bits". (p.2-3) Estableció su convención de que "un valor Unicode individual se expresa como U + nnnn, donde nnnn es un número de cuatro dígitos en notación hexadecimal" (p.1-5).Se asignaron valores suplentes, pero no se definieron códigos de caracteres por encima de U + FFFF, y no se mencionaron UTF-16 o UTF-32. Usó "U +" con cuatro dígitos. The Unicode Standard 3.0.0, publicado en 2000, definió UTF-16 (páginas 46-47) y discutió los puntos de código de U + 010000 y superiores. Usó "U +" con cuatro dígitos en algunos lugares y con seis dígitos en otros lugares. La huella más firme que encontré estaba en The Unicode Standard, version 6.0.0, donde una tabla de notación de sintaxis BNF define los símbolos U+HHHH y U-HHHHHHHH (p.595).

La notación "U +" no es la única convención para representar puntos de código Unicode o unidades de código. Por ejemplo, la Python language defines the following string literals:

  • u'xyz' para indicar una cadena Unicode, una secuencia de caracteres Unicode
  • '\uxxxx' para indicar una cadena con un carácter Unicode denotado por cuatro dígitos hexadecimales
  • '\Uxxxxxxxx' para indicar una cadena con un carácter Unicode denotado por ocho dígitos hexadecimales
+0

Gracias por esta explicación @Jim. Es realmente útil. Yo miraría esos documentos vinculados. –

+1

http://unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html también es compatible con U + HHHH y U-HHHHHHHH. –

Cuestiones relacionadas