Red de conocimiento informático - Problemas con los teléfonos móviles - Problema chino en URL

Problema chino en URL

Debes transcodificar el chino y luego decodificarlo en el servidor

Porque la conexión solicitada no admite chino

El ejemplo es el siguiente:

String string = "Cai Junru";

String eStr = URLEncoder.encode(string, "utf-8");

System.out.println(eStr);

Sistema .out.println(URLDecoder.decode(eStr, "utf-8");

Salida:

%E8%94A1%E5%E5%E5%E5%E5 %E5 %E5%E5%E5%E5%E5%E5%E5%E5%E5%E5decode(eStr, "utf-8"));

Salida:

% E8% 94%A1%E5%90% 9B%E5%A6%82

Cai Junru

Lo anterior es el formato de codificación utilizado por la URL si el parámetro contiene este formato. , el servidor lo decodificará:

new String(user.getName().getBytes("iso-8859-1"), "utf-8")

No lo hagas. use URLDecoder al decodificar, obtenga los parámetros directamente en bytes y luego decodifique de acuerdo con el formato de codificación

Al descargar un archivo, simplemente escriba el archivo en el flujo de salida de respuesta:

respuesta.reset ();

respuesta .setContentType("bin");

respuesta.addHeader("Content-Disposition", "adjunto; nombre de archivo=\""

+ new String(sss. getBytes("iso-8859-1"), "utf-8") + "\"") ;

OutputStream os = respuesta.getOutputStream() ;

String pathString = request.getRealPath("/")

+ new String(sss.getBytes(" iso-8859-1"), "utf-8");

InputStream es = new FileInputStream(new File(pathString));

byte[] buffer = nuevo byte[2048];

int len ​​​​= 0;

while ((len = is.read(buffer)) > 0) {

os.write(buffer, 0, len);

}

is.close() ;

os.flush();

os.close();

Esto devolverá un archivo~~

¡Espero que te haya ayudado!