Unicode es un estándar informático que permite el intercambio de textos en diferentes idiomas, a nivel global. Es desarrollado por el Consorcio Unicode , que tiene como objetivo codificar el texto escrito dando a cualquier carácter en cualquier sistema de escritura un nombre y un identificador numérico, de manera unificada, independientemente de la plataforma informática o el software utilizado.
Esta norma está relacionada con la norma ISO / IEC 10646 que describe una tabla de caracteres equivalentes. La última versión, Unicode 13.0 , se lanzó enmarzo 2020.
Totalmente compatible con el Juego de caracteres universal (UIC) de ISO / IEC 10646 , el estándar Unicode lo amplía agregando un modelo completo de representación y procesamiento de texto, dando a cada carácter un conjunto de propiedades (que pueden ser estandarizadas y estabilizadas en algunos casos). todas las versiones de Unicode donde se ha codificado el carácter, o informativo con solo una recomendación sobre su uso que puede evolucionar según las nuevas necesidades encontradas). Estas propiedades describen con precisión las relaciones semánticas que pueden existir entre varios caracteres sucesivos de un texto, y permiten estandarizar o recomendar algoritmos de procesamiento que preserven al máximo la semántica de los textos transformados. Unicode tiene como objetivo hacer que el mismo texto se pueda utilizar de forma idéntica en sistemas informáticos totalmente diferentes.
Le standard Unicode est constitué d'un répertoire de 143 859 caractères, couvrant plus de 150 écritures, d'un ensemble de tableaux de codes pour référence visuelle, d'une méthode de codage et de plusieurs codages de caractères standard, d'une énumération des propriétés de caractère (lettres majuscules, minuscules, APL , symboles, ponctuation, etc. ) d'un ensemble de fichiers de référence des données informatiques, et d'un certain nombre d'éléments liés, tels que des règles de normalisation, de décomposition, de tri, de rendu et d'ordre d'affichage bidirectionnel (pour l'affichage correct de texte contenant à la fois des caractères d'écritures de droite à gauche, comme l'arabe et l'hébreu, et de gauche à derecha).
En la práctica, Unicode incorpora plenamente la norma ISO / IEC 10646 , ya que esta última estandariza solo caracteres individuales asignándoles un nombre y un número normativo (llamado punto de código ) y una descripción informativa muy limitada, pero sin procesamiento ni especificación. O recomendación para su utilizar para escribir lenguajes reales, que sólo el estándar Unicode define con precisión. La ISO / IEC 10646 es una referencia normativa a partes del estándar Unicode (incluido el algoritmo bidireccional y las propiedades de los caracteres (in) ); Unicode también es un estándar de facto para el procesamiento de textos y sirve como base para muchos otros estándares.
Idiomas escritos:
Abjad (lenguas semíticas)
Unicode, cuya primera publicación se remonta a Octubre de 1991, fue desarrollado para reemplazar el uso de páginas de códigos nacionales.
Estas páginas de códigos tuvieron algunos problemas en el pasado. Por ejemplo, en terminales 3270 que operan en EBCDIC : cuando una nota electrónica incluye un carácter de "signo de moneda", el mismo texto que limita un gasto en dólares para el lector estadounidense mostraría en una pantalla británica la misma cantidad en libras esterlinas , ya que la moneda signo era diferente en cada uno de los dos países.
En la práctica, aún no están presentes todos los sistemas de escritura, porque el trabajo de investigación documental con especialistas aún puede resultar necesario para caracteres raros o sistemas de escritura poco conocidos (porque han desaparecido, por ejemplo).
Sin embargo, se representan los guiones más utilizados en el mundo, así como las reglas sobre la semántica de los personajes , sus composiciones y cómo combinar estos diferentes sistemas. - Por ejemplo, cómo insertar un sistema de escritura de derecha a izquierda en un sistema de escritura de izquierda a derecha ( texto bidireccional ).
En su forma UTF-8, Unicode ofrece cierta interoperabilidad con el código ASCII .
El estándar Unicode define los requisitos para evaluar la conformidad de la implementación de un proceso (o software) con Unicode . Estos requisitos se refieren en particular (en la versión 4.0 ):
Estos requisitos permiten la compatibilidad con un subconjunto de Unicode.
Mientras que ISO / IEC 10646 define el mismo juego de caracteres que Unicode, la diferencia entre ISO / IEC 10646 y Unicode se debe principalmente al requisito de conformidad excesivo proporcionado por Unicode.
Unicode es en 2016 el estándar líder para la codificación de caracteres por computadora. Se utiliza para la interoperabilidad de software y permite, por ejemplo, copiar textos usando caracteres de diferentes alfabetos entre diferentes programas, incluso no diseñados específicamente para ellos (por ejemplo, un programa en caracteres APL en un texto de LibreOffice o en un correo electrónico en Gmail ). Sin embargo, no todos los textos Unicode están codificados de la misma manera. Dependiendo de la estandarización Unicode adoptada, el mismo signo gráfico a veces se puede codificar de diferentes maneras. Algunos textos utilizan la convención NFC , otros la convención NFD , etc. Y la norma no prohíbe mezclar varias convenciones en el mismo texto. Lo mismo ocurre con el software.
Esta coexistencia de varias formas de escribir lo mismo fue explotada por los piratas informáticos en la década de 2000 al permitirles eludir los filtros: los piratas informáticos eludieron las prohibiciones de ciertas cadenas consideradas peligrosas simplemente codificándolas de otra forma, más inusual y, por lo tanto, a veces sin filtrar.
Unicode responde a estas limitaciones proporcionando la noción de equivalencia canónica .
El trabajo en Unicode es paralelo y sincronizado con el del estándar ISO / IEC 10646 cuyos objetivos son los mismos. La ISO / IEC 10646 , una norma internacional publicada en francés e inglés, que no especifica las reglas de composición de los caracteres, ni las propiedades semánticas de los caracteres.
Sin embargo, Unicode aborda la cuestión de las mayúsculas y minúsculas , el orden alfabético y la combinación de acentos y caracteres . Desde la versión 1.1 de Unicode y en todas las versiones posteriores, los caracteres tienen los mismos identificadores que los del estándar ISO / IEC 10646 : los directorios se mantienen en paralelo, idénticos durante su estandarización final, actualizándose los dos estándares casi simultáneamente. Los dos estándares Unicode (desde la versión 1.1 ) e ISO / IEC 10646 garantizan la compatibilidad total con versiones anteriores: cualquier texto que se ajuste a una versión anterior debe seguir siendo compatible en versiones posteriores.
Así, los caracteres de Unicode versión 3.0 son los del estándar ISO / IEC 10646: 2000 . La versión 3.2 de Unicode clasificó 95.221 caracteres, símbolos y directivas.
La versión 4.1 de Unicode, actualizadanoviembre de 2005, contiene:
es decir, un total de casi 245.000 puntos de código asignados en un espacio que puede contener 1.114.112 códigos diferentes.
Sin embargo, parecen existir algunos problemas para la codificación de caracteres chinos , debido a la unificación de los conjuntos ideográficos utilizados en diferentes idiomas, con caligrafía ligeramente diferente y a veces significativa, pero están siendo resueltos por Unicode que tiene selectores definidos. abrió un registro de secuencia estándar que los usa.
Versión | Fecha de publicación | Nuevos personajes |
---|---|---|
1.0.0 | Octubre de 1991 | |
1.0.1 | Junio de 1992 | |
1.1 | De junio de 1993 | |
2.0 | Julio de 1996 | |
2.1 | Mayo de 1998 | |
3,0 | Septiembre de 1999 | |
3.1 | Marzo de 2001 | |
3.2 | Marzo de 2002 | |
4.0 | Abril de 2003 | |
4.1 | Marzo de 2005 | |
5,0 | julio de 2006 | |
5.1 | Marzo de 2008 | |
5.2 | octubre de 2009 | |
6.0 | febrero 2011 | |
6.1 | 31 de enero de 2012 | |
7.0 | 16 de junio de 2014 | 2.834 personajes nuevos, incluidos emojis . |
8.0 | 17 de junio de 2015 | 7.716 caracteres, incluidos muchos emojis. |
9.0 | 21 de junio de 2016 | 7.500 nuevos personajes (incluidos 72 emojis). |
10.0 | 20 de junio de 2017 | 8.518 nuevos personajes (incluidos 56 emojis). |
11,0 | 5 de junio de 2018 | 684 nuevos personajes (incluidos 66 emojis). |
12,0 | 5 de marzo de 2019 | 554 nuevos personajes. |
13,0 | 10 de marzo de 2020 | 5.390 nuevos personajes |
Unicode se define según un modelo en capas ( Nota técnica Unicode n. ° 17 ). Otros estándares normalmente no distinguen entre juego de caracteres y representación física. Las capas se presentan aquí comenzando por la más alta (más alejada de la máquina).
Directorio de personajes abstractos ( un repertorio de personajes abstractos )La capa superior es la definición del juego de caracteres. Por ejemplo, Latin-1 tiene un conjunto de 256 caracteres, mientras que Unicode actualmente estandariza casi 110,000 caracteres. Además, Unicode asigna un nombre a cada uno de estos caracteres.
Por tanto, la lista de caracteres con sus nombres constituye la capa de aplicación Unicode.
Por ejemplo, el carácter Ç se denomina "letra mayúscula latina c cedilla".
Esta definición es completamente idéntica a la de ISO / IEC 10646, que aprueba cualquier extensión del directorio. Unicode solo usa los nombres normativos en inglés en el texto de su estándar, pero el estándar ISO / IEC 10646 se publica en dos lenguajes igualmente normativos. Por lo tanto, los nombres en inglés y francés están estandarizados.
De hecho, cualquier extensión del directorio ahora se realiza conjuntamente entre el grupo de trabajo responsable de ISO / IEC 10646 ( JTC1 / SC2 / WG2 , cuyos miembros votantes son solo las autoridades nacionales de normalización de los países participantes, o su representante oficial), y el Comité Técnico de Unicode UTC (cuyos miembros con derecho a voto pueden ser cualquier organización de interés público o privado, o incluso un gobierno, que se ha unido y paga una tarifa anual para participar en estas decisiones).
Juego de caracteres codificados ( juego de caracteres codificados )Aquí, se agrega un número asociado con cada carácter a la tabla anterior. Tenga en cuenta que esto no es una representación en la memoria, solo un número entero, llamado punto de código . El espacio de codificación para estos números se divide en 17 áreas de 65.536 puntos de código. Estas áreas se llaman planos .
El punto de código se indica "U + xxxx", donde "xxxx" está en hexadecimal y tiene de 4 a 6 dígitos :
Así, el carácter denominado "letra mayúscula latina c cedilla" (Ç) tiene el número U + 00C7. Pertenece al primer plano.
En principio, todos los puntos de código entre U + 0000 y U + 10FFFF están disponibles, pero ciertos intervalos se reservan perpetuamente para usos particulares, en particular una zona de indirección excluida para permitir la codificación UTF-16 ( ver más abajo), las áreas para uso privado y algunas regiones (por ejemplo, U + FFFE o U + FFFF) que contienen no caracteres cuyo uso está prohibido en un intercambio de datos compatible. Los otros puntos de código ya están asignados a caracteres o reservados para una futura estandarización.
Zona para uso privado: Unicode ha asignado muchos puntos de código a caracteres válidos pero cuya semántica se desconoce debido al uso privado (por ejemplo, los dos últimos planes entre U + F0000 y U + 10FFFF están completamente dedicados a este uso, excepto los dos códigos puntos al final de cada plan que están prohibidos sin caracteres en el texto conforme).
Aquí nuevamente, la estandarización de codificación, es decir, la asignación de puntos de código a caracteres en el repertorio común es una decisión conjunta compartida entre las normas Unicode e ISO / IEC 10646 . Todos los caracteres del directorio tienen un punto de código único (incluso si para algunos idiomas o para Unicode algunos caracteres se consideran equivalentes).
Se puede observar que si el directorio de caracteres es extensible, está limitado por el límite superior del espacio de codificación: U + 10FFFF. La gran mayoría de los posibles puntos de código no están asociados con ningún carácter en particular, pero pueden estarlo en cualquier momento.
Además, estos puntos de código aún libres no se consideran inválidos, pero representan caracteres abstractos (aún no especificados y reservados temporalmente). Estos caracteres abstractos (así como los caracteres de uso privado) completan el conjunto de caracteres codificados del directorio estandarizado en un solo juego llamado " conjunto de caracteres codificados universales " ( Conjunto de caracteres codificados universales , a menudo abreviado como UCS ) que contiene todos los conjuntos de caracteres codificados de los directorios. de cada una de las versiones pasadas, presentes y futuras de ISO / IEC 10646 y Unicode (solo desde la versión 1.1 ).
Codificación de caracteres de formalismo ( forma de codificación de caracteres )Esta vez, llegamos a una representación física (en memoria, en disco, etc.): esta capa especifica qué unidad de codificación ( unidades de código ), o codet , representará un carácter o más exactamente un punto de código: byte , seizet (en ) (Palabra de 16 bits) o treinta-deuzet (en) (palabra de 32 bits).
Puede haber (y hay) varios de estos formalismos. Un formalismo particular debe especificar el tamaño de la unidad de codificación e indicar cómo se representa el número entero que representa un punto de código en una serie de unidades de codificación, y viceversa, es decir, cómo encontrar el punto de código dada una secuencia de unidades de codificación.
Caracteres de serialización del mecanismo ( esquema de codificación de caracteres )Esta capa se encarga de serializar las secuencias de unidades de codificación definidas por la capa anterior en secuencias de bytes. Aquí es donde se elige el orden de los bytes entre big-endian (el byte más significativo primero) y little-endian (el byte menos significativo primero).
También es en este paso que es posible agregar un indicador de orden de bytes (o BOM, para marca de orden de bytes ), que indica al comienzo del archivo o flujo de datos si está en big-endian o en little-endian. En el mundo de Internet, rara vez se usa, prefiriendo un marcado explícito (" charset = UTF-16BE " en MIME , por ejemplo, para indicar un flujo de datos big-endian, donde BE significa big endian ).
Transferencia de sobrecodificación ( sintaxis de codificación de transferencia )Aquí, mecanismos opcionales de compresión o encriptación.
También puede haber una sobrecodificación como para LDAP que especifica que las cadenas Unicode deben codificarse en UTF-8 y sobrecodificarse en Base64 .
Para superar las rígidas restricciones de los estándares anteriores (una secuencia de bits, una representación), Unicode separa de ahora en adelante, por un lado, la definición del juego de caracteres (lista de caracteres por su nombre) y su índice, el punto de código , de codificación. . Por tanto, no podemos hablar del tamaño de un carácter Unicode, porque depende de la codificación elegida y, por tanto, puede variar a voluntad. En la práctica, UTF-8 se usa ampliamente en los países occidentales.
Donde ASCII usa 7 bits e ISO / IEC 8859-1 8 bits (como la mayoría de las páginas de códigos nacionales), Unicode, que recopila los caracteres de cada página de códigos, necesitaba usar más de 8 bits por byte . El límite se estableció inicialmente en 16 bits para las primeras versiones de Unicode y 32 bits para las primeras versiones de ISO / IEC 10646 .
El límite de corriente ahora se coloca entre 20 y 21 bits por punto de código asignado a caracteres estandarizados en los dos estándares ahora compatibles entre sí:
Unicode e ISO / IEC 10646 aceptan varias formas de transformación universal para representar un punto de código válido. Citemos:
El número después de UTF representa el número mínimo de bits de puntos de código con los que se representa un punto de código válido.
Estas transformaciones se crearon originalmente para la representación interna y los esquemas de codificación de puntos de código de ISO / IEC 10646 , que originalmente podrían definir puntos de código de 31 bits. Desde entonces, la norma ISO / IEC 10646 ha sido modificada, de modo que las tres formas sean totalmente compatibles entre sí y permitan codificar todos los puntos de código (porque UTF-16 solo permite que los puntos de código de los primeros 17 planos sean representado).
Unicode también ha estandarizado muy estrictamente estas tres formas de transformación de todos los puntos de código válidos (U + 0000 a U + D7FF y U + E000 a U + 10FFFF) y solo ellos, ya sea para representar texto en forma de secuencias de puntos de código, o puntos de código asignados a caracteres válidos, reservados o asignados a no caracteres. Los puntos de código asignados a las medias zonas (U + D800 a U + DFFF), utilizados solo en UTF-16, no son válidos individualmente, ya que se utilizan para representar, mediante un par de 2 puntos de código de 16 bits, los puntos de código. para los 16 planes adicionales.
UTF-8El UTF-8 , especificado en RFC 3629, es la aplicación más común para Unix e Internet . Su codificación de tamaño variable permite que sea en promedio menos costoso en el uso de memoria (para idiomas con alfabeto latino). Pero esto reduce de forma considerable las operaciones que implican extracciones sub-secuencia en algunos idiomas que las cadenas de índice por enteros (ejemplo = "815 º carácter de la cadena"), ya que es necesario contar los caracteres desde el comienzo de la cadena de saber donde está el primer carácter a extraer.
UTF-8 también proporciona, y esta es su principal ventaja, compatibilidad con la manipulación simple de cadenas en ASCII en lenguajes de programación . Por lo tanto, los programas escritos en C a menudo pueden ejecutarse sin modificaciones.
Inicialmente, UTF-8 podía codificar cualquier punto de código entre U + 0000 y U + 7FFFFFFF (hasta 31 bits). Este uso está en desuso y la norma ISO / IEC 10646 se ha modificado para admitir solo los puntos de código válidos de los primeros 17 disparos, excepto los de la media zona correspondientes a los elementos de código utilizados en UTF-16 para la representación en dos códigos. elementos de código de los 16 planes adicionales. Además, las secuencias más largas en UTF-8 requieren un máximo de 4 bytes, en lugar de 6 anteriormente. Además, UTF-8 fue modificado primero por Unicode y luego por ISO / IEC 10646 para aceptar solo la representación más corta de cada punto de código ( codificación única ). El hecho de poder representar de varias formas diferentes el mismo carácter planteaba problemas de seguridad, ya que el hacker podía pasar por alto una forma "filtrada" por una escritura diferente.
Su ventaja sobre UTF-16 (y UTF-32) es que las diferencias en el orden de los bytes que componen una palabra ( endianidad ) no plantean un problema en una red de sistemas heterogéneos; por lo tanto, esta transformación es utilizada hoy por la mayoría de los protocolos de intercambio estandarizados.
Por otro lado, UTF-8 es totalmente compatible para la transmisión de textos mediante protocolos basados en el juego de caracteres ASCII, o puede hacerse compatible (a costa de una transformación multibyte de caracteres no ASCII) con protocolos de intercambio que admitan Juegos de caracteres codificados de 8 bits (ya sea basados en ISO / IEC 8859 o muchos otros juegos de caracteres codificados de 8 bits definidos por estándares nacionales o sistemas propietarios particulares).
Su principal inconveniente es la codificación de longitud muy variable (1 byte para los puntos de código asignados a ASCII - caracteres ISO / IEC 646 , de 2 a 4 bytes para los demás puntos de código), incluso si la sincronización automática es específica de UTF-8 La codificación permite determinar el inicio de una secuencia desde una posición aleatoria (realizando como máximo 3 lecturas adicionales de los puntos de código anteriores). Sin embargo, esta codificación no está diseñada para facilitar el procesamiento de cadenas de caracteres: a menudo preferimos UTF-16, a veces UTF-32 (codiciosos en la memoria).
DerivadosEl UTF-16 es un buen compromiso cuando el espacio de memoria no es demasiado pequeño, porque la gran mayoría de los caracteres Unicode asignados a las escrituras de los idiomas modernos (incluidos los caracteres más utilizados) están en la base del plan multilingüe y, por lo tanto, se pueden representar. en 16 bits. La versión francesa de ISO / IEC 10646 llama a estas palabras de 16 bits "seizets", pero la versión internacional las describe como palabras clásicas de 16 bits compuestas por dos bytes y sujetas a las reglas habituales del endismo .
hola \ lo | DC00 | DC01 | ... | DFFF |
---|---|---|---|---|
D800 | 10,000 | 10001 | ... | 103FF |
D801 | 10400 | 10401 | ... | 107FF |
⋮ | ⋮ | ⋮ | ⋱ | ⋮ |
DBFF | 10FC00 | 10FC01 | ... | 10FFFF |
Los puntos de código de los dieciséis planos adicionales requieren una transformación en dos palabras de 16 bits:
Dado que la mayoría de los caracteres de uso común residen en el plano base, la codificación de clips adicionales a menudo se prueba de manera deficiente en el software, lo que genera errores o problemas de seguridad incluso en software ampliamente distribuido. Ciertos marcos legales, como GB 18030 , pueden solicitar el apoyo de planes adicionales, que contienen en particular los caracteres presentes en los nombres propios.
Es posible determinar el inicio de la secuencia de codificación desde cualquier punto de un texto representado en UTF-16 realizando como máximo una lectura adicional, solo si este punto de código está en la mitad del área inferior. Este formulario es más económico y más fácil de procesar rápidamente que UTF-8 para la representación de textos que contienen pocos caracteres ASCII (U + 0000 a U + 007F).
Sin embargo, esta transformación tiene dos esquemas de codificación incompatibles que dependen del orden de los bytes en la representación entera de 16 bits. Para resolver esta ambigüedad y permitir la transmisión entre sistemas heterogéneos, es necesario agregar información que indique el esquema de codificación utilizado (UTF-16BE o UTF-16LE), o prefijar el texto codificado con la representación del punto de código. U + FEFF válido (asignado al carácter "espacio no divisible de ancho cero", un carácter ahora reservado para este uso exclusivo como marcador de ordenación de bytes), ya que el punto de código "invertido" U + FFFE válido es un no carácter, prohibido en textos conforme a Unicode e ISO / IEC 10646 .
El otro defecto de UTF-16 es que el texto transformado con él y transmitido con cualquiera de los dos esquemas de codificación contiene una gran cantidad de bytes que son nulos o tienen un valor que entra en conflicto con los valores d. Bytes reservados por ciertos protocolos de intercambio.
En particular, esta es la codificación que la plataforma Java utiliza internamente, así como Windows para sus API compatibles con Unicode (con el tipo wchar).
UTF-32El UTF-32 se usa cuando el espacio de memoria no es un problema y necesitamos tener acceso a los caracteres directamente y sin cambio de tamaño ( jeroglíficos egipcios ).
La ventaja de esta transformación estandarizada es que todos los elementos del código tienen el mismo tamaño. Por lo tanto, no es necesario leer puntos de código adicionales para determinar el inicio de la representación de un punto de código.
Sin embargo, este formato es particularmente antieconómico (incluso en memoria) ya que "desperdicia" innecesariamente al menos un byte (siempre cero) por carácter. El tamaño en memoria de un texto tiene un efecto negativo en el rendimiento ya que requiere más lecturas y escrituras en el disco en caso de RAM llena , y también reduce el rendimiento de la memoria caché de los procesadores.
Para los textos escritos en los lenguajes modernos actuales (aparte de ciertos caracteres raros del plano ideográfico suplementario) y, por lo tanto, solo utilizan los puntos de código del plano multilingüe básico, esta transformación duplica la cantidad de memoria requerida en comparación con UTF-16.
Al igual que UTF-16, UTF-32 tiene varios esquemas de codificación dependiendo del orden de los bytes que componen un número entero de más de 8 bits (dos esquemas de codificación de UTF-32 están estandarizados, UTF-32BE y UTF-32LE). Por tanto, también es necesario especificar este esquema de codificación, o determinarlo prefijando el texto con la representación en UTF-32 del punto de código U + FEFF. Al igual que UTF-16, la presencia de bytes nulos en los esquemas de codificación estandarizados de UTF-32 lo hace incompatible con muchos protocolos para el intercambio entre sistemas heterogéneos.
Además, este formato se usa con mayor frecuencia solo de manera muy local para cierto procesamiento como una forma intermedia que es más fácil de manejar, y a menudo preferimos la transformación UTF-16, que a menudo es más eficiente para procesar y almacenar grandes cantidades de textos, la conversión entre siendo los dos muy sencillos de realizar y muy económicos en términos de complejidad de procesamiento.
De hecho, muchas bibliotecas de procesamiento de texto están escritas solo con UTF-16 y son más eficientes que UTF-32, incluso cuando los textos contienen caracteres de planos adicionales (porque este caso de figura sigue siendo raro en la gran mayoría de los casos).
Sin embargo, tenga en cuenta que la transformación a UTF-32 utiliza puntos de código de 32 bits, muchos de los cuales pueden no representar ningún punto de código válido (valores fuera de los dos intervalos que representan puntos de código válidos U + 0000 a U + D7FF y U + E000 a U + 10FFFF), por lo tanto, ningún carácter válido o reservado (cualquier información contenida en él no puede ser texto en el sentido Unicode). La transmisión de textos usando estos valores de código inválidos en uno de los esquemas de codificación estandarizados de UTF-32 está prohibida para cualquier sistema compatible con Unicode (es necesario usar los puntos de código para uso privado en su lugar), ya que será imposible para representarlos en otra transformación UTF con la que las tres UTF estandarizadas son biyectivamente compatibles.
Se trata de una transformación de Unicode que no está definida por el Consorcio Unicode, sino por la administración de estándares en China, donde su soporte es obligatorio en las aplicaciones. Históricamente, se trataba de un conjunto de caracteres codificados, que se ha ampliado para admitir todo el repertorio UCS mediante una transformación algorítmica que completa una gran tabla de correspondencia de código a código.
Afirmar que Unicode codifica caracteres equivale a afirmar que asigna un número a símbolos abstractos, de acuerdo con un principio de codificación lógica. Unicode, por otro lado, no codifica representaciones gráficas de caracteres, glifos . Por tanto, no hay biyección entre la representación del personaje y su número, ya que todas las variaciones gráficas de estilo están unificadas.
Además, a diferencia de una fuente clásica ASCII o Latin-1 , la selección de un glifo por un código no es única y, a menudo, es contextual, y también puede mostrar el mismo glifo para diferentes códigos. Así, el carácter francés "é" puede describirse de dos formas: bien utilizando directamente el número correspondiente a la "é", o siguiendo el número de la "e" por el del acento agudo sin cazar. Cualquiera que sea la opción que elija, se mostrará el mismo glifo. Diremos del primer carácter que está precompuesto, del segundo que es una composición (dos caracteres forman un solo glifo compuesto por ambos). Esto está permitido e incluso es muy recomendable porque Unicode clasifica las diferentes formas de codificación como "canónicamente equivalentes", lo que significa que dos formas equivalentes de codificación deben tratarse de forma idéntica.
Muchos caracteres compuestos son en este caso y se pueden codificar de estas dos formas (o más, algunos caracteres compuestos se pueden descomponer de más de una forma, especialmente cuando tienen varios signos diacríticos). Muy a menudo, el carácter precompuesto es preferible para la codificación del texto, si existe (este es el caso del griego politónico , por ejemplo, que, codificado en descomposición, puede no ser gráficamente satisfactorio: dependiendo de los caracteres de la fuente, los diferentes los componentes del glifo están a veces mal organizados y son difíciles de leer). Sin embargo, no todos los caracteres compuestos tienen un punto de código único para su forma precompuesta.
Asimismo, algunos sistemas de escritura, como el Devânagarî , el persa o el árabe , requieren un tratamiento complejo de las ligaduras : los grafemas cambian de forma en función de su posición o de sus vecinos (ver Variante contextual y Letra conjunta ). La selección del glifo correcto requiere un procesamiento para determinar qué forma contextual seleccionar en la fuente, aunque todas las formas contextuales están codificadas de forma idéntica en Unicode.
Por estas razones, una fuente Unicode debe manejarse con cuidado. Por ejemplo, una fuente con todos los glifos existentes no es suficiente. También es necesario que el sistema de visualización (el motor de renderizado ) posea los mecanismos capaces de procesar ligaduras , variantes contextuales y formas conjuntas específicas de ciertos lenguajes. Por el contrario, una fuente que representa solo una parte de los caracteres pero sabe cómo mostrarlos correctamente, merece mejor el título de "fuente Unicode". Por último, ciertas limitaciones técnicas de los formatos de fuente pueden impedir que admitan todo el directorio. En la práctica, es imposible (en 2009) encontrar una única fuente que admita todo el directorio.
Por lo tanto, una fuente de caracteres Unicode es solo una fuente que permite mostrar directamente un texto codificado en todas las formas autorizadas por Unicode, y permite admitir un subconjunto coherente adaptado a uno o más idiomas para admitir uno o más scripts. Ningún tipo de letra Unicode puede "funcionar" por sí solo, y el soporte de escritura completo requiere soporte para estos en un motor de renderizado , capaz de detectar formas de codificación equivalentes, buscar formas contextuales en el texto y seleccionar los diferentes glifos de una fuente codificada con Unicode. utilizando las tablas de correspondencia incluidas en la propia fuente si es necesario.
La biblioteca de software multiplataforma de ICU le permite manipular datos codificados con Unicode. El soporte Unicode específico de la plataforma también está integrado por los sistemas modernos ( Java , Microsoft Windows , GNU / Linux , bibliotecas estándar C / C ++ , Python , etc.).
Los tipos a utilizar para almacenar variables Unicode son:
Lenguaje de programación | Escriba para un solo carácter | Escriba para cualquier texto |
---|---|---|
VS | char[4] Donde wchar_t[2] | char[] Donde wchar_t[] |
C ++ | char[4] Donde wchar_t[2] | char[]o wchar_t[]o std::stringostd::wstring |
Java | char[2] Donde int | char[] Donde String |
Biblioteca ICU (para C / C ++ o Java) | UChar | UChar[]o String,UnicodeString |
JavaScript o ECMAScript | char | string |
C # o J # | char | string |
Delphi | char[4] Donde widechar[2] | string Donde widestring |
Python 2 | unicode | |
Python 3 | str | |
Vamos | rune(= int32) | string Donde []byte |
Rápido | Character | String |
Sin embargo, Unicode todavía adolece de un soporte débil para las expresiones regulares por parte de algunos programas, aunque bibliotecas como ICU y Java pueden admitirlas. Dicho soporte aún no ha sido estandarizado para ECMAScript y solo se proporciona con la ayuda de bibliotecas creadas con el lenguaje o interfaces para la interoperabilidad con otros sistemas (especialmente con CORBA , COM ) o lenguajes (especialmente C ++ y Java ).
La partición actualizada se puede encontrar en el sitio web oficial de Unicode. Sin embargo, dado el importante papel de Unicode en la actualidad ( ISO / IEC 10646 ), los bloques de caracteres principales se describirán aquí. Los nombres franceses son los nombres oficiales de ISO / IEC 10646 , el estándar bilingüe internacional que utiliza los mismos caracteres que Unicode. Son tan oficiales como los nombres en inglés.
El antiguo estándar Unicode 1.0 es obsoleto e incompatible con ISO / IEC 10646 y Unicode 1.1 y todas sus versiones posteriores; la principal incompatibilidad es la de los bloques de caracteres Hangul utilizados para escribir el idioma coreano que han cambiado de posición y cuyos puntos de código antiguos se han asignado desde entonces a otros bloques. La siguiente tabla es compatible con ISO / IEC 10646 (todas las versiones) y Unicode 1.1 (o posterior).
NB El caso de los nombres de bloque no es normativo. "Latín básico" es, por tanto, equivalente a "LATINO BÁSICO".
En las siguientes tablas, cualquier nombre de bloque con una nota relacionada con un PDF Unicode oficial significa que la página de Wikipedia asociada con ese bloque no existe o es incorrecta.
Plan multilingüe básico (PMB, 0000 a FFFF)Puntos de código | Nombre oficial del bloque | PDF oficial | Más información | |
---|---|---|---|---|
Inicio | Fin | |||
0000 | 007F | Comandos básicos C0 y latinos | U0000 | ver ISO / IEC 646 , ASCII , alfabeto latino , caracteres de control Unicode |
0080 | 00FF | Comandos C1 y suplemento Latin-1 | U0080 | consulte ISO / IEC 8859 , ISO / IEC 8859-1 , alfabeto latino , caracteres de verificación Unicode |
0100 | 017F | Latín extendido A | U0100 | ver alfabeto latino |
0180 | 024F | Latín extendido B | U0180 | ver alfabeto latino |
0250 | 02AF | Alfabeto fonético internacional (API) | U0250 | ver Alfabeto Fonético Internacional |
02B0 | 02FF | Letras de enmienda con ancho | U02B0 | ver Diacríticos , Alfabeto latino , Diacríticos del alfabeto latino , Alfabeto fonético internacional |
0300 | 036F | Diacríticos | U0300 | ver Diacríticos , Diacríticos del alfabeto latino , Diacríticos del alfabeto griego , Alfabeto copto , Diacríticos del alfabeto cirílico |
0370 | 03FF | Griego y copto | U0370 | ver Alfabeto Griego y Alfabeto Copto |
0400 | 04FF | cirílico | U0400 | ver alfabeto cirílico |
0500 | 052F | Suplemento cirílico | U0500 | ver alfabeto cirílico |
0530 | 058F | armenio | U0530 | ver alfabeto armenio |
0590 | 05FF | hebreo | U0590 | ver Alfabeto hebreo , Diacríticos , Diacríticos del alfabeto hebreo |
0600 | 06FF | árabe | U0600 | ver alfabeto árabe |
0700 | 074F | Siríaco | U0700 | ver siríaco |
0750 | 077F | Suplemento árabe | U0750 | ver alfabeto árabe |
0780 | 07BF | Thâna | U0780 | ver alfabeto de Maldivas |
07C0 | 07FF | N'ko | U07C0 | ver N'ko |
0800 | 083F | samaritano | U0800 | ver alfabeto samaritano |
0840 | 085F | Mandeo | U0840 | ver Alfabeto mandeo |
0860 | 086F | Suplemento siríaco | U0860 | ver siríaco |
0870 | 089F | reserva | - | - |
08A0 | 08FF | Árabe extendido A | U08A0 | ver Alfabeto árabe , Diacríticos , Diacríticos del alfabeto árabe |
0900 | 097F | Devanagari | U0900 | ver Devanâgarî |
0980 | 09FF | bengalí | U0980 | ver bengalí |
0A00 | 0A7F | Gurmoukhi | U0A00 | ver Gurmukhī |
0A80 | 0AFF | Gujarat | U0A80 | ver alfabeto gujarati |
0B00 | 0B7F | Oriya | U0B00 | ver Oriya |
0B80 | 0BFF | Tamil | U0B80 | ver tamil |
0C00 | 0C7F | Telougou | U0C00 | ver Telougou |
0C80 | 0CFF | Kannara | U0C80 | ver Kannara |
0D00 | 0D7F | Malayalam | U0D00 | ver malayalam |
0D80 | 0DFF | cingalés | U0D80 | ver cingalés |
0E00 | 0E7F | tailandés | U0E00 | ver tailandés |
0E80 | 0EFF | Lao | U0E80 | ver a Lao |
0F00 | 0FFF | Tibetano | U0F00 | ver tibetano |
1000 | 109F | birmano | U1000 | ver birmano |
10A0 | 10FF | georgiano | U10A0 | ver georgiano , alfabeto georgiano |
1100 | 11FF | Jamos hangul | U1100 | ver Hangûl |
1200 | 137F | etíope | U1200 | ver Alphasyllabaire geez |
1380 | 139F | Suplemento etíope | U1380 | ver Alphasyllabaire geez |
13A0 | 13FF | Cherokee | U13B0 | ver el silabario cherokee |
1400 | 167F | Silabarios indígenas canadienses unificados | U1400 | ver idiomas nativos americanos |
1680 | 169F | Ogam | U1680 | ver alfabeto Oghamic |
16A0 | 16FF | Runas | U16A0 | ver alfabeto rúnico |
1700 | 171F | Tagalo | U1700 | ver tagalo |
1720 | 173F | Hanounóo | U1720 | ver Alfabeto Hanunóo (en) |
1740 | 175F | Bouhide | U1740 | ver Buhid (en) |
1760 | 177F | Tagbanoua | U1760 | ver Alfabeto Tagbanoua (en) |
1780 | 17FF | Jemer | U1780 | ver Khmer |
1800 | 18 AF | mongol | U1800 | ver mongol |
18B0 | 18FF | Silabarios indígenas canadienses extendidos | U18B0 | ver idiomas nativos americanos |
1900 | 194F | Limbou | U1900 | ver Limbou |
1950 | 197F | Tai es | U1950 | ver Taï-le |
1980 | 19DF | Nuevo Taï lü | U1980 | ver Tai lü |
19E0 | 19FF | Símbolos jemer | U19E0 | ver Khmer |
1A00 | 1A1F | Bougui | U1A00 | ver Lenguaje Bugis , Escribir Lontara |
1A20 | 1AAF | Tai tham | U1A20 | ver Alfabeto Taï Tham ( fr ) |
1AB0 | 1AFF | Diacríticos extendidos | U1AB0 | ver diacrítico |
1B00 | 1B7F | Balinés | U1B00 | ver escritura balinesa |
1B80 | 1BBF | Soundanese | U1B80 | ver Alfabeto soundanés y sudanés (en) |
1BC0 | 1BFF | Batak | U1BC0 | ver el guión de Batak |
1C00 | 1C4F | Lepcha | U1C00 | ver Alphabet Lepch (en) |
1C50 | 1C7F | Ol chiki | U1C50 | ver Alfabeto santâlî |
1C80 | 1C8F | Cirílico extendido C | U1C80 | ver alfabeto cirílico , eslavo eclesiástico |
1C90 | 1CBF | Georgiano extendido | U1C90 | ver georgiano , alfabeto georgiano |
1CC0 | 1CCF | Suplemento sundanés | U1CC0 | ver Alfabeto soundanés y sudanés (en) |
1CD0 | 1CFF | Extensiones védicas | U1CD0 | ver sánscrito |
1D00 | 1D7F | Suplemento fonético | U1D00 | ver Alfabeto Fonético Internacional |
1D80 | 1DBF | Suplemento fonético ampliado | U1D80 | ver Alfabeto Fonético Internacional |
1DC0 | 1DFF | Suplemento de diacríticos | U1DC0 | ver diacrítico |
1E00 | 1EFF | Latín extendido adicional | U1E00 | ver alfabeto latino |
1F00 | 1FFF | Griego extendido | U1F00 | ver Alfabeto griego , Griego politónico |
2000 | 206F | Puntuación general | U2000 | ver Puntuación , Espacio |
2070 | 209F | Exponentes e índices | U2070 | ver exponente y subíndice |
20A0 | 20CF | Símbolos de moneda | U20A0 | ver símbolo de moneda |
20D0 | 20FF | Signos combinatorios para símbolos | U20D0 | ver Flecha , rotación |
2100 | 214F | Símbolos de tipo de letra | U2100 | ver Temperatura , Símbolo matemático , Símbolos de la ley de marcas registradas |
2150 | 218F | Formas numéricas | U2150 | ver número romano , fracción |
2190 | 21FF | Flechas | U2190 | ver flecha |
2200 | 22FF | Operadores matemáticos | U2200 | ver operadores matemáticos |
2300 | 23FF | Varios signos técnicos | U2300 | ver Alfabeto griego , Puntuación , Flecha , Símbolos matemáticos , Emoji |
2400 | 243F | Pictogramas de comando | U2400 | ver ISO / IEC 8859 , ISO / IEC 646 , Control C0 (en) |
2440 | 245F | Reconocimiento óptico de caracteres | U2430 | ver Reconocimiento óptico de caracteres |
2460 | 24FF | Alfanumérico en un círculo | U2460 | ver alfabeto latino , números arábigos |
2500 | 257F | Redes | U2500 | ver Carácter de dibujo de forma (en) |
2580 | 259F | Adoquines | U2580 | ver Carácter de dibujo de forma ( pulg. ) , Rectángulo |
25A0 | 25FF | Formas geométricas | U25A0 | ver forma geométrica |
2600 | 26FF | Símbolos varios | U2600 | ver Símbolo , Emoji , Juego de cartas francés , Ajedrez , Símbolo de género |
2700 | 27BF | Casseau | U2700 | ver símbolo , números arábigos , puntuación , emoji , operadores matemáticos , flecha |
27C0 | 27EF | Símbolos matemáticos diversos A | U27C0 | ver símbolo matemático |
27F0 | 27FF | Flechas suplemento A | U27F0 | ver flecha |
2800 | 28FF | Combinaciones braille | U2800 | ver Braille |
2900 | 297F | Suplemento de flechas B | U2900 | ver flecha |
2980 | 29FF | Símbolos matemáticos diversos B | U2980 | ver símbolo matemático |
2A00 | 2AFF | Operadores matemáticos adicionales | U2A00 | ver operadores matemáticos |
2B00 | 2BFF | Varios símbolos y flechas | U2B00 | ver Flecha , Emoji |
2C00 | 2C5F | Glagotic | U2C00 | ver Alfabeto Glagolítico |
2C60 | 2C7F | Latín extendido C | U2C00 | ver Alfabeto latino , uigur |
2C80 | 2CFF | copto | U2C80 | ver alfabeto copto |
2D00 | 2D2F | Suplemento georgiano | U2D00 | ver georgiano , alfabeto georgiano |
2D30 | 2D7F | Tifinagh | U2D30 | ver Tifinagh y lenguas bereberes |
2D80 | 2DDF | Extendido etíope | U2D80 | ver Alphasyllabaire geez |
2DE0 | 2DFF | Cirílico extendido A | U2DE0 | ver Alfabeto cirílico , Diacríticos , Diacríticos del alfabeto cirílico |
2E00 | 2E7F | Suplemento de puntuación | U2E00 | ver puntuación |
2E80 | 2EFF | Formas adicionales de claves CJC | U2E80 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
2F00 | 2FDF | Llaves chinas Kangxi | U2F00 | ver Diccionario de caracteres Kangxi |
2FE0 | 2FEF | reserva | - | - |
2FF0 | 2FFF | Descripción ideográfica | U2FF0 | ver descripción ideográfica |
3000 | 303F | Símbolos y puntuación de CJC | U3000 | ver Puntuacion , chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
3040 | 309F | Hiragana | U3040 | ver Hiragana , Escritos de japonés , japonés |
30A0 | 30FF | Katakana | U30A0 | ver Katakana , Escritos de japonés , japonés |
3100 | 312F | Bopomofo | U3100 | ver Bopomofo , chino, japonés y coreano , Sinogramme |
3130 | 318F | Compatibilidad con Hangul jamos | U3130 | ver HANGUL , Sinogramme , Corea |
3190 | 319F | Kanbun | U3190 | ver Kanbun , Sinogramme |
31A0 | 31BF | Bopomofo extendido | U31A0 | ver Bopomofo , Sinogramme |
31C0 | 31EF | Rasgos de CJC | U31C0 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
31F0 | 31FF | Extensión fonética Katakana | U31F0 | ver Katakana , Escritos de japonés , japonés |
3200 | 32FF | Cartas y meses de CJC en un círculo | U3200 | ver figuras árabe , chino, japonés y coreano , Sinogramme , escritura china , idiomas chinos , escrituras japonesas , japoneses , hanja , Corea |
3300 | 33FF | Compatibilidad con CJC | U3000 | ver Unidad de medida , chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
3400 | 4DBF | Suplemento A de los ideogramas unificados de la CJC ( Parte 1 ) ( Parte 2 ) |
U3400 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
4DC0 | 4DFF | Hexagramas del Clásico de Mutaciones o Yi Jing | U4DC0 | ver Yi Jing , Hexagram , Chino, Japonés y Coreano , Sinogram |
4E00 | 9FFF | Ideogramas unificados de CJC ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) |
U4E00 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , coreano , vietnamita |
A000 | A48F | Silabario yi de las Montañas Frescas | UA000 | ver silabario yi |
A490 | A4CF | Llaves Yi | UA490 | ver silabario yi |
A4D0 | A4FF | Lisu | UA4D0 | ver Lisu , Alphabet Fraser (en) |
A500 | A63F | Vai | UA500 | ver Syllabaire vaï |
A640 | A69F | Cirílico extendido B | UA640 | ver alfabeto cirílico |
A6A0 | A6FF | Bamoun | UA6A0 | ver el guión de Bamoun |
A700 | A71F | Cambio de letras de tono | UA700 | ver Idioma en tonos , Idiomas chinos |
A720 | A7FF | Latín extendido D | UA720 | ver alfabeto latino |
A800 | A82F | Sylotî nâgrî | UA800 | ver Sylotî nâgrî (en) |
A830 | A83F | Formas digitales comunes indias | UA830 | ver la India |
A840 | A87F | Phags-pa | UA840 | ver script de phagpa |
A880 | A8DF | Saurachtra | UA880 | ver Alfabeto Saurashtra (en) |
A8E0 | A8FF | Devanāgarī extendido | UA8E0 | ver Devanâgarî |
A900 | A92F | Kayah li | UA900 | ver Alfabeto Kayah Li |
A930 | A95F | Rejang | UA930 | ver Escritura rejang |
A960 | A97F | Jamos Hangul Extendido A | UA960 | ver HANGUL , Sinogramme , Corea |
A980 | A9DF | javanés | UA980 | ver escritura javanesa |
A9E0 | A9FF | Birmano extendido B | UA9E0 | ver birmano , escritura birmana |
AA00 | AA5F | Cham | UAA00 | ver Cham |
AA60 | AA7F | Birmano extendido A | UAA60 | ver birmano , escritura birmana |
AA80 | AADF | Tai viet | UAA80 | ver Alfabeto taï viêt , Tay dam , Tay don , Tay Song ( fr ) |
AAE0 | AAFF | Meitei mayek extendido | EAU0 | ver Meitei , escritura Meitei |
AB00 | AB2F | Etíope extendido A | UAB00 | ver Alphasyllabaire geez |
AB30 | AB6F | E latino extendido | UAB30 | ver Alfabeto latino , Teuthonista , Alfabeto d'Ascoli , Alfabeto Rousselot-Gilliéron |
AB70 | ABBF | Suplemento Cherokee | UAB70 | ver el silabario cherokee |
ABC0 | ABFF | Meitei mayek | UABC0 | ver Meitei , escritura Meitei |
AC00 | D7AF | Sílabas Hangul ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) |
UAC00 | ver HANGUL , Sinogramme , Corea |
D7B0 | D7FF | Jamos Hangul Extendido B | U27B0 | ver HANGUL , Sinogramme , Corea |
D800 | DBFF | Media zona de alta indirección | UD800 | ver Media zona superior de indirección |
DC00 | DFFF | Media zona de baja indirección | UDC00 | ver media zona de indirección baja |
E000 | F8FF | Área de uso privado ( Parte 1 ) ( Parte 2 ) |
UE000 | Sin rasgo definido oficialmente |
F900 | FAFF | Ideogramas de compatibilidad CJC | UF900 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
FB00 | FB4F | Formas de presentación alfabética | UFB00 | ver Alfabeto latino , Alfabeto hebreo , Alfabeto armenio |
FB50 | FDFF | Formulario de presentación en árabe A ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) |
UFB50 | ver alfabeto árabe |
FE00 | FE0F | Selectores de variantes | UFE00 | ver variante de selectores (en) |
FE10 | FE1F | Formas verticales | UFE10 | ver Puntuación , GB 18030 |
FE20 | FE2F | Signos medios combinatorios | UFE20 | ver diacrítico |
FE30 | FE4F | Formularios de compatibilidad CJC | UFE30 | ver chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea |
FE50 | FE6F | Pequeñas variaciones de forma | UFE50 | consulte Puntuación , GBK , GB 2312 , CNS 11643 (en) |
FE70 | FEFF | Formularios de presentación en árabe B | UFE70 | ver alfabeto árabe |
FF00 | FFEF | Formas de ancho medio y completo | UFF00 | ver formas en medio y ancho completo , chino, japonés y coreano , Sinogramme , la escritura china , idiomas chino , escrituras japonesa , japonesa , hanja , Corea , ASCII , alfabeto latino |
FFF0 | FFFF | Caracteres especiales | UFFF0 | ver Caracteres especiales |
Puntos de código | Nombre oficial del bloque | PDF oficial | Más información | |
---|---|---|---|---|
Inicio | Fin | |||
10,000 | 1007F | Silabario lineal B | U10000 | ver Lineal B |
10080 | 100FF | Ideogramas lineales B | U10080 | ver Lineal B |
10100 | 1013F | Números del Egeo | U10100 | ver números iEgean (en) |
10140 | 1018F | Números griegos antiguos | U10140 | ver números griegos antiguos |
10190 | 101CF | Símbolos antiguos | U10190 | ver Unidades Roman , moneda romana |
101D0 | 101FF | Disco de Phaistos | U101D0 | ver Disco de Festos |
10200 | 1027F | reserva | - | - |
10280 | 1029F | Licio | U10280 | ver Lycien |
102A0 | 102DF | Carien | U102A0 | ver alfabeto cariano |
102E0 | 102FF | Números de epacto copto | U102E0 | ver copto |
10300 | 1032F | Alfabeto en cursiva | U10300 | ver Alfabeto antiguo en cursiva |
10330 | 1034F | gótico | U10330 | ver gótico |
10350 | 1037F | Viejo pérmico | U10350 | ver antiguo alfabeto pérmico |
10380 | 1039F | Ugarítico | U10380 | ver alfabeto ugarítico |
103A0 | 103FF | Persa viejo | U103A0 | ver persa antiguo |
10400 | 1044F | Deseret | U10400 | ver Alfabeto deseret |
10450 | 1047F | Shavien | U10450 | ver el alfabeto de Shavian |
10480 | 104AF | Osmanya | U10480 | ver el alfabeto de Osmanya |
104B0 | 104FF | Osage | U104B0 | ver Osage |
10500 | 1052F | Elbasan | U10500 | ver guión de Elbasan |
10530 | 1056F | Aghbanian | U10530 | ver alfabeto agbano |
10570 | 105FF | reserva | - | - |
10600 | 1077F | Lineal A | U10600 | ver lineal A |
10780 | 107FF | reserva | - | - |
10800 | 1083F | Silabario chipriota | U10800 | ver silabario chipriota |
10840 | 1085F | Arameo imperial | U10840 | ver alfabeto arameo |
10860 | 1087F | Alfabeto palmireno | U10860 | ver el alfabeto palmireno |
10880 | 108AF | Nabateo | U10880 | ver alfabeto nabateo |
108B0 | 108DF | reserva | - | - |
108E0 | 108FF | Hatrenian | U108E0 | ver Alfabeto de Hatrénien ( fr ) |
10900 | 1091F | Fenicio | U10900 | ver alfabeto fenicio |
10920 | 1093F | Lidio | U10920 | ver el alfabeto de Lidia |
10940 | 1097F | reserva | - | - |
10980 | 1099F | Jeroglíficos meroíticos | U10980 | ver escritura meroítica |
109A0 | 109FF | Cursiva meroítica | U109A0 | ver escritura meroítica |
10A00 | 10A5F | Kharochthî | U10A00 | ver Alfabeto kharoshthi |
10A60 | 10A7F | Árabe del sur | U10A60 | ver Alfabeto de Arabia del Sur |
10A80 | 10A9F | Árabe del norte | U10A80 | ver Viejo norte árabe (en) |
10AA0 | 10ABF | reserva | - | - |
10AC0 | 10AFF | Maniqueo | U10AC0 | ver Alfabeto maniqueo (en) |
10B00 | 10B3F | Avestic | U10B00 | ver Alfabeto de Avestic (en) |
10B40 | 10B5F | Inscripciones partas | U10B40 | ver inscripciones partas (en) |
10B60 | 10B7F | Pehlevi de inscripciones | U10B60 | ver guión de pehlevi |
10B80 | 10BAF | Pehlevi de los Salterios | U10B80 | ver escritura de pehlevi , Salterio |
10BB0 | 10 mejores amigas | reserva | - | - |
10C00 | 10C4F | Orkhon | U10C00 | ver Alfabeto Orkhon |
10C50 | 10C7F | reserva | - | - |
10C80 | 10CFF | Viejo húngaro | U10C80 | ver Runas húngaras |
10D00 | 10E5F | reserva | - | - |
10E60 | 10E7F | Símbolos digitales Rumi | U10E60 | ver Figuras de Fez , Fez |
10E80 | 10FDF | reserva | - | - |
10FE0 | 10FFF | Elymaic | U10FE0 | ver Élymaïque (en) |
11000 | 1107F | brahmán | U11000 | ver a Brahmi |
11080 | 110CF | Khaithi | U11080 | ver Khaithi |
110D0 | 110FF | Sora sompeng | U110D0 | ver Alfabeto sora sompeng (en) |
11100 | 1114F | Chakma | U11100 | ver Ojhapath |
11150 | 1117F | Mahajanî | U11150 | ver Mahâjanî (en) |
11180 | 111DF | Charada | U11180 | ver Sharda Alphasyllabary |
111E0 | 111FF | Números arcaicos cingaleses | U111E0 | ver cingalés |
11200 | 1124F | Khojki | U11200 | ver Khojki (en) |
11250 | 1127F | reserva | - | - |
11280 | 112AF | Multani | U11280 | ver Alfabeto Multani (en) |
112B0 | 112FF | Khudabadi | U112B0 | ver Escritura de Khudabadi (en) |
11300 | 1137F | Grantha | U11300 | ver Grantha |
11380 | 113FF | reserva | - | - |
11400 | 1147F | Newa | U11400 | ver Alfabeto Newa (en) |
11480 | 114DF | Tirhuta | U11480 | ver Tirhuta |
114E0 | 1157F | reserva | - | - |
11580 | 115FF | Siddham | U11580 | ver Alphasyllabary siddham |
11600 | 1165F | Modi | U11600 | ver Modi Alphasyllabary |
11660 | 1167F | Suplemento mongol | U11660 | ver mongol |
11680 | 116CF | Takri | U11680 | ver Alfabeto Takri (en) |
116D0 | 116FF | reserva | - | - |
11700 | 1173F | Ahom | U11700 | ver Alphasyllabaire âhom |
11740 | 1189F | reserva | - | - |
118A0 | 118FF | Warang citi | U118A0 | ver Warang Citi (en) |
11900 | 11999 | reserva | - | - |
119A0 | 119FF | nandinâgarî | U119A0 | ver Nandinagari (en) |
11A00 | 11A4F | Zanabazar cuadrático | U11A00 | ver Zanabazar , mongol |
11A50 | 11AAF | Soyombo | U11A50 | ver guión soyombo |
11AB0 | 11ABF | reserva | - | - |
11AC0 | 11AFF | Paou chin haou | U11AC0 | ver Escribir Paou chin haou (en) |
11B00 | 11 BFF | reserva | - | - |
11C00 | 11C6F | Bhaiksuki | U11C00 | ver Alfabeto Bhaiksuki (en) |
11C70 | 11CBF | Marchen | U11C70 | ver Zhang-zhung |
11CC0 | 11CFF | reserva | - | - |
11D00 | 11D5F | Masaram gondi | U11D00 | ver Masaram Gondi (en) , Gondi |
11D60 | 11FBF | reserva | - | - |
11FC0 | 11FFF | Suplemento tamil | U11FC0 | ver tamil |
12000 | 123FF | Cuneiforme | U12000 | ver cuneiforme |
12400 | 1247F | Puntuación y números cuneiformes | U12400 | ver cuneiforme |
12480 | 1254F | Cuneiforme de las dinastías arcaicas | U12480 | ver cuneiforme |
12550 | 12FFF | reserva | - | - |
13000 | 1342F | Jeroglíficos egipcios | U13000 | ver escritura jeroglífica egipcia |
13430 | 1343F | Controles de formato de jeroglíficos egipcios | U13430 | ver escritura jeroglífica egipcia |
13440 | 143FF |
Reservado (Parte 1) (Parte 2) |
- | - |
14400 | 1467F | Jeroglíficos de Anatolia | U14400 | ver Jeroglíficos de Anatolia |
14680 | 167FF |
Reservado (Parte 1) (Parte 2) (Parte 3) |
- | - |
16800 | 16A3F | Suplemento Bamoun | U16800 | ver el guión de Bamoun |
16A40 | 16A6F | Mro | U16A40 | ver Language Mro (en) |
16A70 | 16ACF | reserva | - | - |
16AD0 | 16AFF | Bassa | U16AD0 | ver Alphabet bassa |
16B00 | 16B8F | Pahawh hmong | U16B00 | ver Pahawh hmong |
16B90 | 16EFF | reserva | - | - |
16F00 | 16F9F | Miao | U16F00 | ver Escribiendo Miao (en) |
16FA0 | 16FDF | reserva | - | - |
16FE0 | 16FFF | Símbolos ideográficos y puntuación | U16FE0 | ver ideograma , escritura Tangut , Nüshu |
17000 | 187FF | Tangoute (Parte 1) (Parte 2) |
U17000 | ver la escritura de Tangoute |
18800 | 18AFF | Componentes Tangut | U18800 | ver la escritura de Tangoute |
18B00 | 1AFFF |
Reservado (Parte 1) (Parte 2) (Parte 3) |
- | - |
1B000 | 1B0FF | Suplemento de kana | U1B00 | ver Japonés , Escritos japoneses , Kana |
1B100 | 1B12F | Kana extendido A | U1B100 | ver Japonés , Escritos japoneses , Kana , Hentaigana |
1B130 | 1B16F | Extensión pequeña kana | U1B130 | ver Japonés , Escritos japoneses , Kana , Hentaigana |
1B170 | 1B2FF | Nüshu | U1B170 | ver Nüshu |
1B300 | 1BBFF | reserva | - | - |
1BC00 | 1BC9F | Taquigrafía duplicada | U1BC00 | ver Taquigrafía , Émile Duployé |
1BCA0 | 1CFFF |
Reservado (Parte 1) (Parte 2) |
- | - |
1D000 | 1D0FF | Símbolos musicales bizantinos | U1D000 | ver música bizantina |
1D100 | 1D1FF | Símbolos musicales occidentales | U1D100 | ver música occidental |
1D200 | 1D24F | Notación musical griega antigua | U1D200 | ver Música griega antigua |
1D250 | 1D2FF | reserva | - | - |
1D300 | 1D35F | Símbolos clásicos del misterio supremo | U1D300 | ver Tai Xuan Jing (en) |
1D360 | 1D37F | Figuras de palo chino | U1D360 | ver Conteo de barras |
1D380 | 1D3FF | reserva | - | - |
1D400 | 1D7FF | Símbolos matemáticos alfanuméricos | U1D400 | ver Símbolo matemático , Alfabeto latino , Números arábigos |
1D800 | 1DAAF | Escribiendo los signos de Sutton | U1D800 | ver letreros de escritura |
1DAB0 | 1DFFF | reserva | - | - |
1E000 | 1E02F | Suplemento glagolítico | U1E000 | ver Alfabeto Glagolítico |
1E030 | 1E0FF | reserva | - | - |
1E100 | 1E14F | Nyiakeng puachue hmong | U1E800 | ver Nyiakeng puachue hmong (en) |
1E150 | 1E2DF | reserva | - | - |
1E2C0 | 1E2FF | Wancho | U1E2C0 | ver Wancho |
1E300 | 1E7FF | reserva | - | - |
1E800 | 1E8DF | Mendicidad kikakui | U1E800 | ver Kikakui |
1E8E0 | 1E8FF | reserva | - | - |
1E900 | 1E95F | Adlam | U1E900 | ver Alfabeto adlam |
1E960 | 1ECFF | reserva | - | - |
1ED00 | 1ED4F | Figuras de Syaq | U1ED00 | |
1ED50 | 1ECFF | reserva | - | - |
1EE00 | 1EEFF | Símbolos del alfabeto matemático árabe | U1EE00 | ver Matemáticas árabes |
1EF00 | 1EFFF | reserva | - | - |
1F000 | 1F02F | Piezas de Mahjong | U1F000 | ver Mah-jong |
1F030 | 1F09F | Dominó | U1F030 | ver dominós |
1F0A0 | 1F0FF | Naipes | U1F0A0 | ver jugando a las cartas |
1F100 | 1F1FF | Suplemento alfanumérico circular | U1F100 | ver ARIB STD-B24 (en) |
1F200 | 1F2FF | Suplemento ideográfico circular | U1F200 | ver ARIB STD-B24 (en) |
1F300 | 1F5FF | Varios símbolos y pictogramas | U1F300 | ver Pictograma , Emoji |
1F600 | 1F64F | Emoticonos | U1F600 | ver Emoticon , Emoji |
1F650 | 1F67F | Casete ornamental | U1F650 | ver Wingdings |
1F680 | 1F6FF | Transporte y símbolos cartográficos | U1F680 | ver Transporte , Cartografía , Emoji |
1F700 | 1F77F | Símbolos alquímicos | U1F700 | ver alquimia |
1F780 | 1F7FF | Formas geométricas extendidas | U1F780 | ver forma geométrica |
1F800 | 1F8FF | Suplemento de flechas C | U1F800 | ver flecha |
1F900 | 1F9FF | Símbolos y pictogramas adicionales | U1F900 | ver Pictograma , Emoticon , Emoji |
1FA00 | 1FA6F | reserva | - | - |
1FA70 | 1FAFF | Símbolos y pictogramas extendidos-A | U1FA70 | ver Pictograma , Emoji |
1FB00 | 1FFFF | reserva | - | - |
Puntos de código | Nombre oficial del bloque | Más información | |
---|---|---|---|
Inicio | Fin | ||
20.000 | 2A6DF | Suplemento B de ideogramas unificados de CJC ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) |
ver chino, japonés y coreano |
2A6E0 | 2A6FF | reserva | - |
2A700 | 2B73F | Suplemento C de los ideogramas unificados de CJC ( Parte 1 ) ( Parte 2 ) |
ver chino, japonés y coreano |
2B740 | 2B81F | Suplemento D de los ideogramas CJC unificados | ver chino, japonés y coreano |
2B820 | 2CEAF | Suplemento E de los ideogramas unificados de la CJC | ver chino, japonés y coreano |
2CEB0 | 2EBEF | Suplemento F de los ideogramas unificados de la CJC | ver chino, japonés y coreano |
2EBF0 | 2F7FF | reserva | - |
2F800 | 2FA1F | Suplemento de ideogramas de compatibilidad CJC | ver chino, japonés y coreano |
2FA20 | 2FFFF | reserva | - |
Puntos de código | Nombre oficial del bloque | Más información | |
---|---|---|---|
Inicio | Fin | ||
30.000 | 3FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 3 |
40.000 | 4FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 4 |
50.000 | 5FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 5 |
60.000 | 6FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 6 |
70.000 | 7FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 7 |
80.000 | 8FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 8 |
90.000 | 9FFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 9 |
A0000 | AFFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 10 |
B0000 | BFFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 11 |
C0000 | CFFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 12 |
D0000 | DFFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
Plan 13 |
Puntos de código | Nombre oficial del bloque | Comentarios | |
---|---|---|---|
Inicio | Fin | ||
E0000 | E007F | Etiquetas | |
E0080 | E00FF | reserva | - |
E0100 | E01EF | Suplemento de selectores de variantes | |
E01F0 | EFFFF |
Reservado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
- |
Puntos de código | Nombre oficial del bloque | PDF oficial | Comentarios | |
---|---|---|---|---|
Inicio | Fin | |||
F0000 | FFFFF |
Zona A adicional para uso privado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
UF0000 | Sin rasgo definido oficialmente |
100.000 | 10FFFF |
Zona B adicional para uso privado ( Parte 1 ) ( Parte 2 ) ( Parte 3 ) ( Parte 4 ) ( Parte 5 ) ( Parte 6 ) ( Parte 7 ) ( Parte 8 ) ( Parte 9 ) ( Parte 10 ) ( Parte 11 ) ( Parte 12 ) ( Parte 13 ) ( Parte 14 ) ( Parte 15 ) ( Parte 16 ) ( Parte 17 ) |
U100000 | Sin rasgo definido oficialmente |
Las áreas de uso privado no contienen los mismos ojos de una fuente a otra y, por lo tanto, deben evitarse para codificar textos destinados a intercambios entre sistemas heterogéneos. Sin embargo, estos puntos de código de uso privado son válidos y pueden usarse en cualquier procesamiento automatizado conforme a las normas Unicode e ISO / IEC 10646 , incluso entre diferentes sistemas si existe un acuerdo mutuo privado con respecto a su uso.
En ausencia de acuerdo entre las dos partes, los sistemas que utilizan estos caracteres pueden rechazar los textos que los contienen, porque el tratamiento al que están sometidos podría no funcionar correctamente o causar problemas de seguridad; otros sistemas que no atribuyan ninguna función especial a estos caracteres deben, en cambio, aceptarlos como válidos y mantenerlos como parte integrante de los textos, como si fueran símbolos gráficos, aunque no sepan visualizarlos. ellos correctamente.
Los no caracteres son puntos de código válidos, pero no se asignan (y nunca se asignarán) a caracteres estandarizados. Su uso en la codificación de textos transmitidos entre sistemas (aunque sean idénticos) está prohibido, porque es imposible hacerlos compatibles con las formas de transformación universales estandarizadas (incluyendo UTF-8, UTF-16, UTF-32) la codificación correspondiente, y otras codificaciones estandarizadas compatibles con Unicode e ISO / IEC 10646 ( BOCU -1, SCSU , diferentes versiones del estándar chino GB 18030 , etc. ). Sin embargo, algunos sistemas los generan y utilizan localmente, pero para un procesamiento estrictamente interno destinado a facilitar la implementación de algoritmos de procesamiento de texto utilizando los otros caracteres estandarizados.
Entre estos últimos no caracteres se encuentran los puntos de código válidos reservados para las medias zonas (privadas o no). Estos puntos de código no se pueden utilizar individualmente para codificar un carácter. Se utilizan solo para la forma de transformación universal UTF-16 (y los esquemas de codificación correspondientes) para representar en dos puntos de código (a 16 bits cada uno) puntos de código válidos en uno de los 16 planos complementarios (ciertas combinaciones de puntos de código corresponden a caracteres válidos de estos planos, estándar o privados, otras combinaciones pueden no representar ningún carácter válido porque corresponderían a no caracteres de estos planos complementarios, por lo que están prohibidas en los textos conforme a la norma).
Otras áreas libres (no asignadas a un bloque con nombre estandarizado, o puntos de código que se dejan libres y reservados en bloques con nombre existentes) están reservadas para uso futuro en futuras versiones de Unicode e ISO / IEC 10646 , pero son válidas. Cualquier sistema que trate con textos que contengan estos puntos de código reservados debe aceptarlos sin filtrarlos. Unicode define propiedades predeterminadas para caracteres hipotéticos correspondientes, con el fin de preservar la compatibilidad de los sistemas (conforme al estándar Unicode) con futuros textos que los contengan. Ninguna aplicación conforme debe asignarles un carácter especial o semántica (las áreas privadas están destinadas para este uso).