java - tabla - ¿Cómo convierto puntos de código Unicode a su representación de caracteres?
tipos de codificaciones (5)
¿Cómo convierto cadenas que representan puntos de código al carácter apropiado?
Por ejemplo, quiero tener una función que obtenga U+00E4
y devuelva ä
.
Sé que en la clase de caracteres tengo una función para toChars(int codePoint)
que toma un entero, pero no hay una función que tome una cadena de este tipo.
¿Hay una función incorporada o tengo que hacer alguna transformación en la cadena para obtener el número entero que puedo enviar a la función?
La forma más fácil que he encontrado hasta ahora es simplemente lanzar el punto de código; Si solo está esperando un solo carácter por punto de código, entonces esto podría estar bien para usted:
int codepoint = ...;
char c = (char)codepoint;
Los puntos de código se escriben como números hexadecimales con el prefijo U+
Entonces, puedes hacer esto
int codepoint=Integer.parseInt(yourString.substring(2),16);
char[] ch=Character.toChars(codepoint);
Puedes imprimirlos
s=''/u0645/u0635/u0631/u064a''
print(s)
este ejemplo no usa char [].
// this code is Kotlin, but you can write same thing in Java
val sb = StringBuilder()
val cp :Int // codepoint
when {
Character.isBmpCodePoint(cp) -> sb.append(cp.toChar())
Character.isValidCodePoint(cp) -> {
sb.append(Character.highSurrogate(cp))
sb.append(Character.lowSurrogate(cp))
}
else -> sb.append(''?'')
}
"/u00E4"
new String(new int[] { 0x00E4 }, 0, 1);