Java maneja caracteres Unicode
La codificación Unicode simplemente identifica cada carácter con un número binario de 16 bits. Pero normalmente se identifica mediante un número hexadecimal de 4 dígitos.
Por ejemplo:
1) El código Unicode de la cadena china "Hello" es: \u60\u597d
2) La cadena en inglés "ab; " El código Unicode es: \u0061\u0062;
Donde \u se utiliza para identificar el código Unicode, y el siguiente número hexadecimal de 4 dígitos es el código Unicode del carácter correspondiente.
Los códigos Unicode se utilizan ampliamente en proyectos J2EE y Java proporciona un buen soporte para códigos Unicode. Por ejemplo, la internacionalización es una aplicación clásica de Unicode.
Entonces, ¿cuáles son las reglas de codificación específicas de Unicode y cómo implementarlas con un programa?
1. Reglas de codificación Unicode
El código Unicode representa cada carácter con un número hexadecimal de 4 dígitos. Las reglas específicas son: sacar los 8 bits superiores y los 8 bits inferiores de un carácter (char) y convertirlos en números hexadecimales.
Si la longitud del número hexadecimal convertido es inferior a 2 dígitos, entonces. Luego agregue 0, luego concatene las cadenas hexadecimales convertidas de 8 bits alto y bajo y agregue "\u" al frente.
2. Programa de transcodificación
1) Convertir cadena a Unicode
/**
* Convertir cadena a Unicode
* @param str Cadena a convertir
* @return cadena unicode
*/
conversión de cadena pública (String str)
{
cadena = (cadena == null ? "" : cadena
String tmp;
StringBuffer sb = nuevo StringBuffer(1000) ;
char c;
int i, j;
sb.setLength(0); i < str.length(); i++)
{
c = str.charAt(i
sb.append(" \\u"); );
j = (c >>>8); //Obtener los 8 bits altos
tmp = Integer.toHexString(j); (tmp.length() == 1)
sb.append("0");
sb.append(tmp); c & 0xFF); // Elimina los 8 bits inferiores
tmp = Integer.toHexString(j
if (tmp.length() == 1)
p>
sb.append("0");
sb.append(tmp);
}
retorno (nuevo); String(sb) );
}
2) Convierta Unicode a cadena e invierta el proceso anterior
/**
* Convertir cadena Unicode
* @param str Cadena a convertir
* @return Cadena ordinaria
*/
public String revert( Cadena cadena)
{
cadena = (cadena == null ? "" : cadena
if (str.indexOf("\ \u"); ) == -1)//Si no es un código Unicode, devuélvalo como está
return str
StringBuffer sb = new StringBuffer(1000);
for (int i = 0; i < str.length() - 6;)
{
String strTemp = str.substring(i, i + 6);
{
Cadena strTemp = str.substring(i, i + 6
p>
Valor de cadena = strTemp.substring(2)
int c = 0;
for (int j = 0; j < valor.longitud(); j++ )
{
char tempChar = value.charAt(j);
int t = 0;
cambiar (tempChar)
{
caso 'a':
t = 10
b;
reak;
caso 'b':
t = 11;
caso 'c':
t = 12;
descanso;
caso 'd':
t = 13
descanso
p>caso 'd':
p>
caso 'e':
t = 14
descanso
caso 'f':
t = 15;
interrupción
predeterminado:
t = tempChar - 48
romper;
}
c += t * ((int) Math.pow(16, (valor.longitud() - j - 1 )));
}
sb.append((char) c
i = i + 6
}
return sb.toString();
}