2011-02-03 11 views
13

¿Qué caracteres unicode caben en 1, 2, 4 bytes? ¿Alguien puede indicarme que complete la tabla de caracteres?UTF-8 Tamaño de codificación

+4

Lea esto primero: http://www.joelonsoftware.com/articles/Unicode.html –

+2

¿Una tabla completa? Eso va a ser ENORME. Vea esto para una versión impresa del plano multilingüe básico (hay 16 más): http://shop.designinmainz.de/en/Poster/decodeunicode-Basic-Multilingual-Plane-BMP-Map Vea DecodeUnicode para un wiki-como representación de caracteres Unicode: http://www.decodeunicode.org/es – Piskvor

+0

También puede leer sobre códigos universales: http://en.wikipedia.org/wiki/Universal_code_%28data_compression%29 – ruslik

Respuesta

21

Los caracteres se codifican según su posición en la gama. En realidad se puede encontrar el algoritmo en la página de Wikipedia para UTF8 - se puede aplicar muy rápidamente Wikipedia UTF8 Encoding

  • U + 0000 a U + 007F son (correctamente) codificado con un byte
  • U + 0080 a U + 07FF están codificados con 2 bytes
  • U + 0800 a U + FFFF están codificados con 3 bytes
  • U + 010.000 a U + 10FFFF están codificados con 4 bytes
4

El artículo de Wikipedia sobre UTF-8 tiene una buena suficiente descripción de la codificación:

  • 1 byte = código de puntos 0x000000 a 0x00007F
  • puntos
  • 2 bytes = Código de 0x000070 a 0x0007FF
  • puntos
  • 3 bytes = Código de 0x000800 a 0x00FFFF
  • 4 bytes = puntos de código 0x010000 a 0x10FFFF

Los cuadros se pueden descargar directamente desde unicode.org. Es un conjunto de aproximadamente 150 archivos PDF, porque un solo gráfico sería enorme (tal vez 30 MiB).

También tenga en cuenta que Unicode (en comparación con algo así como ASCII) es mucho más complejo de procesar; hay cosas como texto de derecha a izquierda, marcas de orden de bytes, puntos de código que se pueden combinar ("compuestos") para crear un solo carácter y diferentes formas de representar exactamente la misma cadena (y un proceso para convertir cadenas en una forma canónica adecuada para la comparación), mucho más caracteres de espacio en blanco, etc. Recomiendo descargar toda la especificación Unicode y leer más de eso si planeas hacer más que "no mucho".

1

UTF-8 se compromete de 1 a un límite de 6 bytes, aunque la cantidad actual de puntos de código se cubre con solo 4 bytes. UTF-8 utiliza el primer byte para determinar cuánto tiempo (en bytes) del personaje es - ver los diferentes enlaces a la página wiki:

UTF-8 Wikipedia

un solo byte UTF-8 es efectivamente ASCII - UTF-8 era diseñado para ser compatible con él, por lo que es más frecuente que UTF-16, por ejemplo.


Editar: Al parecer, se acordó puntos de código del UTF-8 no superaría los 21 bits (4 secuencias de bytes) - pero tiene la capacidad técnica para manejar hasta 31 bits (6 bytes UTF-8) .

+0

UTF-8 está limitado a 4 bytes. Los puntos de código Unicode están limitados a U + 1FFFFF (21 bits) y la codificación UTF-8 es canónica (debe elegir el más corto). Por lo tanto, nunca puede terminar con una secuencia UTF-8 de 5 bytes. O decodificaría a un personaje pasado U + 1FFFFF, o no sería canónico. – MSalters

+0

El juego de caracteres actual de UTF-8 solo usa 4 bytes, pero fue diseñado para puntos de código de hasta 31 bits, lo que da como resultado una secuencia de 6 bytes. – Mikaveli

+2

* caracteres de 6 bytes *? [estremecimiento] – Piskvor

Cuestiones relacionadas