java - simbolos - unicode text table
¿Cómo poner un carácter Unicode suplementario en un literal de cadena? (2)
"Funciona para mí", ¿cuál es exactamente el problema?
public static void main (String[] args) throws Exception {
int cp = 0x10400;
String text = "test /uD801/uDC00";
System.out.println("cp: " + cp);
System.out.println("found: " + text.codePointAt(5));
System.out.println("len: " + text.length());
}
Salida:
cp: 66560
found: 66560
len: 7
Tenga en cuenta que la longitud, como la mayoría de los métodos de String, trata con caracteres, no con caracteres Unicode. Tanto para el increíble soporte de Unicode :)
Feliz codificacion
¿Cómo colocar un carácter Unicode suplementario (por ejemplo, punto de código 10400 ) en una cadena literal? He intentado poner un par de sustitutos como este:
String text = "TEST /uD801/uDC00";
System.out.println(text);
pero no parece funcionar.
ACTUALIZAR:
La buena noticia es que la cadena está construida correctamente.
Matriz de bytes en UTF-8: 54 45 53 54 20 f0 90 90 80
Matriz de bytes en UTF-16: fe ff 0 54 0 45 0 53 0 54 0 20 d8 1 dc 0
Pero la mala noticia es que no se imprime correctamente (en mi caja de Fedora) y puedo ver un cuadrado en lugar del símbolo esperado (mi consola no es compatible con Unicode correctamente).
Se supone que funciona utilizando:
System.out.println(
"text = " + new String(Character.toChars(h))
);
Pero la salida es:
text = ?