Javas char es de 16 bits, sin embargo, Unicode tiene muchos más caracteres. ¿Cómo lidia Java con eso?¿Cómo es compatible Java 16 bits con Unicode?
Respuesta
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);
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.
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 –
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.
- 1. ¿Lua es compatible con Unicode?
- 2. Versión Unicode compatible con Java 6
- 3. Vim no es compatible con Unicode?
- 4. Es TIdHTTPServer Compatible con Microsoft BITS
- 5. profundidad de bits de 16 bits
- 6. Claro inferior 16 bits
- 7. ¿LevelDB es compatible con Java?
- 8. Ruby 1.9 no es compatible con la normalización Unicode aún
- 9. ¿Es compatible gcc con int de 128 bits en amd64?
- 10. Convierta caracteres UTF-16 unicode a UTF-8 en java
- 11. OleDB no es compatible con el modo de 64 bits?
- 12. Java: Cómo reemplazar los últimos 16 bits de un largo con un corto
- 13. Numpy y PGM de 16 bits
- 14. ¿Es posible usar ints cortos (16 bits) en PHP?
- 15. Buscando el compilador x86 de 16 bits
- 16. La decodificación de Python Unicode no es compatible
- 17. Conversión de punto flotante de 32 bits a 16 bits
- 18. ¿Convertir bmp de 24 bits a 16 bits?
- 19. Convertir 16 bits con la firma int a 2 bytes?
- 20. Lectura en 16 bits de un registro de 32 bits
- 21. escala de grises de 16 bits png
- 22. Función de cksum compatible con Java
- 23. Java Trabajar con bits
- 24. División de 64/32 bits en un procesador con división de 32/16 bits
- 25. ¿Es compatible con declarative_authorization?
- 26. Lea archivos de texto unicode con java
- 27. C++: Haciendo que mi proyecto sea compatible con unicode
- 28. cómo convertir dos bytes en un número de 16 bits?
- 29. ¿GCC es compatible con long long int?
- 30. manera más rápida de cambiar orden de bits en C# con palabras de 16 bits
¿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