Nota: Toda la información de texto almacenada en una computadora guarda los caracteres que conocemos (caracteres chinos o ingleses) en una determinada tabla de codificación (0, 1, 0, 1). El proceso binario de los caracteres hasta el almacenamiento de la computadora está codificando, y el proceso desde leer binario hasta texto se llama decodificación. Hay muchas tablas de codificación diferentes para la codificación de caracteres, por lo que si el formato de codificación y el formato de decodificación no son la misma tabla de códigos, aparecerá un código confuso. Para evitar el código confusión, debe usar la misma tabla de código al guardar y leer.
A menudo hay códigos confusos en la programación web de Java. Ahora déjame explicarte en detalle cómo configurarlos para evitar códigos confusos.
1 codificación de la página web
Al escribir una página web, debe especificar el formato de codificación de la página web y usar <meta http-oquiv = "content-type" content = "text/html; charset = utf-8"> para especificarlo. En este momento, cuando el navegador lee o envía la solicitud, los datos se guardarán o enviarán en el formato de codificación especificado. Aquí está en forma de UTF-8.
Por ejemplo, el fragmento de código:
<form de acción = "/pro1/bb" método = "post"> username: <input type = "text" name = "username"> <br> gender: macho <input type = "radio" name = "gender" valor = "masculino"> femenino <input type = "radio" name = "género" valor = "femenino"> <br> Color favorito: <Br> rojo <input type = "checkbox" name "name" value "rojo" femenino " type = "checkBox" name = "color" value = "verde"> azul <input type = "checkBox" name = "color" value = "azul"> <br> países de <select name = "país"> <opción value = "China"> China </opcion> <opción valor = "us"> us </opción> <opción valor = "japón"> japón <//select> <br> <Brit type = "Subting" Subting " type = "reset" value = "reset"> </form>
2 datos de solicitud de lectura de back -end
En el servlet de la web Java, para obtener los datos solicitados, los datos binarios enviados deben decodificarse de acuerdo con la tabla de código correspondiente para obtener la cadena legible para humanos correspondiente. En este ejemplo, se utiliza el método de publicación, por lo que al procesar la solicitud posterior, debe establecer el formato de codificación antes de obtener los parámetros de solicitud china, de lo contrario se producirá el código confuso. Porque el servidor usa la tabla de codificación ISO-8859-1 de forma predeterminada para decodificar.
Por supuesto, si desea emitir caracteres chinos en la salida, también debe usar la codificación de caracteres unificados. Aquí está UTF-8, el código es el siguiente
Public void dopost (solicitud httpservletrequest, httpservletreponse respuesta) lanza ServletException, ioexception {request.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); String UserName = request.getParameter ("UserName"); String gender = request.getParameter ("género"); Cadena [] colores = request.getParametervalues ("color"); String country = request.getParameter ("país"); out.println ("<! DocType html>"); out.println ("<Evieve> <title> Test Servlet </title> </head>"); out.println ("<body>"); out.print ("<h1> La siguiente es su entrada </h1>"); out.print ("<p>"); out.print ("Su nombre de usuario:"+nombre de usuario+"<br>"); out.print ("tu género:"+género+"<br>"); out.print ("tu color favorito:"); for (cadena cr: colores) {out.print (cr+""); } out.print ("<br>"); out.print ("tu país:"+país+"<br>"); out.print ("</p>"); out.println ("</body>"); out.println ("</html>"); }Nota: request.setcharacterEncoding ("UTF-8"); Aquí es válido solo para el contenido de la entidad solicitante. Los parámetros de solicitud posteriores se almacenan en la entidad de solicitud, y los parámetros de solicitud del método GET se colocan después de la URL y comienzan con un signo de interrogación, y '&' conectan múltiples parámetros. Entonces, si desea obtener los parámetros del método GET, debe usar la decodificación manual o usar el filtro.
Método de decodificación manual, en aras de la simplicidad, solo decodificaciones de género, y en uso real, cada parámetro debe decodificarse: String gender = new String (req.getParameter ("género"). GetBytes ("ISO-8859-1"), "UTF-8");
En este punto, el fenómeno de los caracteres chinos confundidos en la web y el lado del servidor se puede resolver perfectamente. Recuerde una cosa: el confusión por un lado es porque la codificación y la decodificación usan diferentes tablas de codificación. Debe usar la misma tabla de codificación para resolver el problema.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.