Red de conocimiento de abogados - Derecho de sociedades - Java maneja caracteres Unicode

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();

}