¿Cómo convertir la codificación hexadecimal utf8 a caracteres chinos en Java?
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; p>
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