Nota: Todas as informações de texto armazenadas em um computador salvam os caracteres que conhecemos (caracteres chineses ou ingleses) em uma determinada tabela de codificação (0, 1, 0, 1). O processo binário de caracteres ao armazenamento de computador está codificando, e o processo de leitura binário ao texto é chamado de decodificação. Existem muitas tabelas de codificação diferentes para a codificação de caracteres; portanto, se o formato de codificação e o formato de decodificação não forem a mesma tabela de código, o código ilegal aparecerá. Para evitar o código ilegal, você precisa usar a mesma tabela de código ao salvar e ler.
Muitas vezes, existem códigos ilegais na programação da Web Java. Agora, deixe -me explicar em detalhes como configurá -los para evitar códigos ilegíveis.
1 codificação da página da web
Ao gravar uma página da web, você precisa especificar o formato de codificação da página da web e usar <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> para especificá-lo. No momento, quando o navegador lê ou envia a solicitação, os dados serão salvos ou enviados no formato de codificação especificado. Aqui está na forma de UTF-8.
Por exemplo, trenó de código:
<form action = "/pro1/bb" method = "post"> nome de usuário: <input type = "text" name = "username"> <br> gênero: masculino <input type = "radio" name = "gênero" value = "masculino"> fêmea <input type = "radio" name = "gênero" = "feminino" "> <br> cor de cor"> Verde <input type = "caixa de seleção" name = "color" value = "verde"> azul <input type = "caixa de seleção" name = "color" value = "azul"> <br> países de <select name = "country"> <option value = "China"> China </option> <opção </option value = "us"> </option> <option) <input type = "reset" value = "reset"> </mand>
2 dados de solicitação de leitura de back -end
No servlet da Web Java, para obter os dados solicitados, os dados binários enviados precisam ser decodificados de acordo com a tabela de código correspondente para obter a sequência legível por humanos correspondente. Neste exemplo, o método de postagem é usado; portanto, ao processar a solicitação de postagem, você precisa definir o formato de codificação antes de obter os parâmetros de solicitação chinesa, caso contrário, ocorrerá um código ilegal. Porque o servidor usa a tabela de codificação ISO-8859-1 por padrão para decodificar.
Obviamente, se você deseja gerar caracteres chineses na saída, também precisa usar a codificação de caracteres unificados. Aqui está o UTF-8, o código é o seguinte
public void DoPost (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {request.setcharacterencoding ("utf-8"); Response.setContentType ("Texto/html; charset = utf-8"); PrintWriter out = Response.getWriter (); String userName = request.getParameter ("nome de usuário"); String gênero = request.getParameter ("gênero"); String [] Colors = request.getParameterValues ("Color"); String country = request.getParameter ("país"); out.println ("<! doctype html>"); out.println ("<head> <title> Test Servlet </ititle> </head>"); out.println ("<body>"); out.print ("<h1> a seguir é sua entrada </h1>"); out.print ("<p>"); out.print ("Seu nome de usuário:"+nome de usuário+"<br>"); out.print ("Seu sexo:"+gênero+"<br>"); out.print ("Sua cor favorita:"); for (string cr: colors) {out.print (cr+""); } out.print ("<br>"); out.print ("Seu país:"+país+"<br>"); out.print ("</p>"); out.println ("</body>"); out.println ("</html>"); }Nota: request.SetcharActerencoding ("UTF-8"); Aqui é válido apenas para o conteúdo da entidade solicitante. Os parâmetros de solicitação de postagem são armazenados na entidade de solicitação, e os parâmetros de solicitação do método GET são colocados após o URL e começam com um ponto de interrogação e '&' Connect vários parâmetros. Portanto, se você deseja obter os parâmetros do método GET, precisará usar a decodificação manual ou usar o filtro.
Método de decodificação manual, por uma questão de simplicidade, apenas decodões de gênero e, no uso real, cada parâmetro precisa ser decodificado: string gênero = new string (req.getParameter ("gênero"). GetBytes ("iso-8859-1"), "utf-8");
Nesse ponto, o fenômeno dos caracteres chineses iluminado na web e no lado do servidor pode ser perfeitamente resolvido. Lembre -se de uma coisa: por um lado, por um lado é porque a codificação e a decodificação usam diferentes tabelas de codificação. Você deve usar a mesma tabela de codificação para resolver o problema.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.