El esquema de codificación de compatibilidad para UTF-16: 8 bits ( CESU-8 ) es una variante de UTF-8 que se describe en el Informe técnico de Unicode n . ° 26. [1] Un punto de código Unicode del plano multilingüe básico (BMP), es decir, un punto de código en el rango U + 0000 a U + FFFF, se codifica de la misma forma que en UTF-8. Un carácter suplementario Unicode, es decir, un punto de código en el rango U + 10000 a U + 10FFFF, se representa primero como un par suplente, como en UTF-16 , y luego cada punto de código suplente se codifica en UTF-8. Por lo tanto, CESU-8 necesita seis bytes (3 bytes por suplente) para cada carácter suplementario Unicode, mientras que UTF-8 solo necesita cuatro. Aunque no se especifica en el informe técnico,los sustitutos no apareados también se codifican como 3 bytes cada uno, y CESU-8 es exactamente lo mismo que aplicar un convertidor UCS-2 a UTF-8 más antiguo a datos UTF-16.
La codificación de caracteres Unicode no BMP funciona a 11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx
(yyyy representa los cinco primeros bits del carácter menos uno). El valor de byte 0xF0 no aparecerá en CESU-8, ya que inicia la codificación de 4 bytes utilizada por UTF-8.
CESU-8 no es una parte oficial del estándar Unicode, porque los informes técnicos Unicode son solo documentos informativos. [2] Debe utilizarse exclusivamente para el procesamiento interno y nunca para el intercambio de datos externos.
El soporte de CESU-8 en documentos HTML está prohibido por los estándares HTML W3C [3] [4] y WHATWG [5] , ya que presentaría una vulnerabilidad de secuencias de comandos entre sitios . [6]
El UTF-8 modificado de Java es CESU-8 con una codificación especial demasiado larga del carácter NUL (U + 0000) como secuencia de dos bytes C0 80
. [7]
La base de datos de Oracle utiliza CESU-8 para su juego de caracteres "UTF8". El UTF-8 estándar se puede obtener utilizando el juego de caracteres " AL32UTF8 " (desde la versión 9.0 de Oracle).
Ejemplos de
Punto de código Unicode | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U + 0045 | U + 0205 | U + 10400 | |||||||||||||||||
mi | ȅ | 𐐀 | |||||||||||||||||
UTF-8 | 45 | C8 | 85 | F0 | 90 | 90 | 80 | ||||||||||||
UTF-16 | 0045 | 0205 | D801 | DC00 | |||||||||||||||
CESU-8 | 45 | C8 | 85 | ED | A0 | 81 | ED | B0 | 80 |
Referencias
- ^ McGowan, Rick. "Informe técnico Unicode # 26 - Esquema de codificación de compatibilidad para UTF-16: 8 bits (CESU-8)" . Consorcio Unicode.
- ^ "Acerca de los informes técnicos Unicode - Tipos de informes técnicos Unicode: UAX, UTS, UTR" . Consorcio Unicode.
- ^ "8.2.2.3. Codificaciones de caracteres" . Estándar HTML 5.1 . W3C.
- ^ "8.2.2.3. Codificaciones de caracteres" . Estándar HTML 5 . W3C.
- ^ "12.2.3.3 Codificaciones de caracteres" . Estándar de vida HTML . WHATWG.
- ^ " - HTML" . Documentos web de MDN . Mozilla.
- ^ "Documentación de Java SE para la interfaz java.io.DataInput, subsección sobre UTF-8 modificado" . Oracle Corporation . 2015 . Consultado el 30 de abril de 2021 .