2009-12-21 21 views

Respuesta

7

Las cadenas de Java son UTF-16 (big endian), por lo que un punto de código Unicode puede tener uno o dos caracteres. Bajo esta codificación, Java puede representar el punto de código U + 1D50A (MATEMATICO FRAKTUR CAPITAL G) usando los caracteres 0xD835 0xDD0A (literal de cadena "\uD835\uDD0A"). La clase Character proporciona métodos para convertir a/desde puntos de código.

// Unicode code point to char array 
char[] math_fraktur_cap_g = Character.toChars(0x1D50A); 
+0

¿Por qué no estamos usando 'int' type' math_fraktur_cap_g' para leer pares de sustitución de no BMP? como se menciona [aquí] (https://stackoverflow.com/a/13112474/3317808) – overexchange

13

http://en.wikipedia.org/wiki/UTF-16

En informática, UTF-16 (16-bit UCS/Unicode Transformation Format) es un carácter codificación de longitud variable para Unicode, capaz de codificar toda la repertorio Unicode. El formulario de codificación asigna cada carácter a una secuencia de palabras de 16 bits. Los caracteres se conocen como puntos de código y las palabras de 16 bits se conocen como unidades de código. Para los caracteres del Plano multilingüe básico (BMP) , la codificación resultante es una sola palabra de 16 bits. Para los caracteres en los otros planos, la codificación dará como resultado un par de palabras de 16 bits , juntas llamadas par suplente. Todo el código posible puntos de U + 0000 a U + 10FFFF, excepto el código sustituto puntos U + D800-U + DFFF (que no son caracteres), se asignan de forma única por el punto de código de UTF-16 independientemente de asignación de caracteres actual o futura o uso.

+0

Y vea mi respuesta anterior en SO para saber cómo iterar correctamente sobre todos los caracteres en una cadena de Java. http://stackoverflow.com/questions/1527856/how-can-i-iterate-through-the-unicode-codepoints-of-a-java-string/1527891#1527891 –

3

Java usa UTF-16 para cadenas, básicamente significa que los caracteres son de ancho variable. La mayoría de ellos caben en 16 bits, pero los que están fuera de Basic Multilingual Pane ocupan 32 bits. Es muy similar al esquema UTF-8.

Cuestiones relacionadas