Red de conocimiento informático - Material del sitio web - ¿Cómo convertir la codificación hexadecimal utf8 a caracteres chinos en Java?

¿Cómo convertir la codificación hexadecimal utf8 a caracteres chinos en Java?

Al obtener datos o enviar una solicitud en una aplicación JSP o Servlet basada en el protocolo HTTP, la JVM codifica los datos entregados en formato UTF8. getParameter("NAME");//de la secuencia HTTP para obtener los datos UTF8 de "NAME"

b = utf8_value.getBytes("8859_1"); //Transición intermedia con ISO-8859-1

String name = new String(b, "GB2312"); //Convertir a caracteres GB2312

Convierte el flujo de entrada a una matriz de bytes Java cuando la longitud del flujo de entrada es conocido La clase abstracta de flujo de entrada InputStream tiene un método int read (byte [] b, int off, int len) y un parámetro byte [] b, que se utiliza para almacenar datos leídos de InputStream. int off especifica la dirección de desplazamiento de la matriz b. es decir, la matriz b. El subíndice inicial, int len ​​​​especifica la longitud que se leerá y el método devuelve el número real de bytes leídos. El método devuelve el número real de bytes leídos.

El siguiente código logra esto:

ServletInputStream inStream = request.getInputStream(); //obtener flujo de solicitud HTTP

int size = request.getContentLength () ; //obtiene el flujo de solicitud HTTP.

byte[] buffer = nuevo byte[tamaño] //se utiliza para almacenar en caché los datos para cada lectura

byte[] in_b = nuevo byte [tamaño]; //se usa para almacenar una matriz de resultados

int count = 0;

int rbyte = 0;

mientras (count < tamaño) {

//recorrido

rbyte = inStream.read(buffer); //La longitud real de cada lectura se almacena en rbyte

for(int i=0;i<. rbyte;i++) {

in_b[count + i] = buffer[i];

}

count + = rbyte;

}

Convertir una secuencia de entrada en una matriz de bytes sin conocer la longitud de la secuencia. La sección anterior describió cómo convertir una secuencia cuando se conoce la longitud. ¿Qué hacer cuando no sabemos cuánto dura la secuencia, es decir, no podemos determinar qué tan grande es la matriz de bytes convertida? Revisé la documentación de JDK y descubrí que ByteArrayOutputStream tiene un método byte[] toByteArray (), que crea automáticamente una matriz de bytes y la devuelve. Utilice inteligentemente ByteArrayOutputStream como una transición intermedia para lograr la conversión, y otros procedimientos de procesamiento son casi los mismos que en el caso de longitud conocida mencionado anteriormente.

Suponiendo que el flujo de datos a convertir se haya puesto en inStream, podemos usar el siguiente código para lograr esta función:

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

byte[] buff = new byte [100]; //buff se usa para guardar datos temporales leídos en el bucle

int rc = 0;

while ((rc = inStream.read(buff) , 0, 100 )));

buff = new byte[100]; //buff se utiliza para guardar datos temporales leídos en el bucle

int rc = 0;

while ((rc = inStream.read(buff, 0, 100)))read(buff, 0, 100)) > 0) {

swapStream.write(buff, 0, rc);

}

byte[] in_b = swapStream.toByteArray(); //in_b es el resultado de la conversión

Puedes intenta reescribirlo El código que necesitas