Ao implantar um programa de webservices hoje, o servlet que obtém dados da página encontrou um problema distorcido. No servlet, adicionei o texto request.setCharacterEncoding("GB2312");
Encontre informações on-line da seguinte maneira: JAVA é a codificação Unicode, primeiro converta-a para ISO8859-1 e depois converta-a para GBK ou GB2312.
código java
Isso é chinês!
Existe uma maneira mais fácil, que é definir a conversão da codificação diretamente no servidor. TOMCAT5.0.28 é usado.
Encontre o arquivo SERVER.XML no diretório ../Tomcat 5.0/conf, abra-o com o WordPad e configure-o da seguinte forma:
Basta adicionar um atributo dentro, URIEncoding="GBK"
O teste foi aprovado e pronto. Então, qual é o papel que a frase request.setCharacterEncoding("GB2312") desempenha. Se não puder resolver o problema complicado, que papel devemos desempenhar?
(1) A página JSP está em chinês, mas quando você olha para ela, ela está distorcida:
A solução é codificar a página JSP. Devido ao problema de codificação quando o JSP é convertido em um arquivo Java, alguns servidores usam ISO-8859-1 por padrão. Se o chinês for inserido diretamente em um JSP, o JSP o tratará como ISO8859. 1 é definitivamente um problema. Podemos confirmar isso observando o arquivo intermediário Java gerado pelo Jasper.
(2) Ao usar o objeto Request para obter o código de caracteres chineses enviado pelo cliente, aparecerão caracteres ilegíveis:
A solução é configurar um filtro, que é um filtro Servelet. O código é o seguinte:
request.setCharacterEncoding("GBK");
//Passa o controle para o próximo filtro
chain.doFilter(solicitação,resposta);
}
<mapeamento de filtro></mapeamento de filtro>
<filter-name></filter-name>Definir codificação de caracteres
<url-padrão></url-padrão>/*
Há também o processamento de informações contendo caracteres chineses. O código de processamento é:
A solução é:
1) Abra o arquivo server.xml do Tomcat, encontre o bloco e adicione a seguinte linha:
Codificação URI=”GBK”
O completo deverá ser o seguinte:
(4) Existem caracteres chineses na página JSP e caracteres chineses nos botões, mas ao visualizar a página através do servidor, aparecem caracteres ilegíveis:
A solução é: Primeiro, o texto da mensagem localizada não deve ser incluído diretamente no arquivo JSP, mas o texto deve ser obtido do Pacote de Recursos por meio da tag <bean:message>. Você deve colocar seu texto em chinês no arquivo Application.properties. Este arquivo é colocado em WEB-INF/classes/*. Por exemplo, se eu tiver dois rótulos para nome e idade na página, primeiro preciso criar um Aplicativo. propriedades. O conteúdo interno deve ser name = "name" age = "age", então coloco esse arquivo em WEB-INF/classes/properties/ e codifico-o de acordo com o arquivo Application.properties para criar um arquivo de recurso chinês. , assumindo que o nome seja Application_cn.properties. O comando native2ascii é fornecido no JDK, que pode realizar a conversão de codificação de caracteres. Encontre o diretório onde você colocou o arquivo Application.properties no ambiente DOS Execute o comando no ambiente DOS. O arquivo de recurso chinês Application_cn.properties codificado em GBK será gerado: native2ascii ?encoding gbk Application.properties Application_cn.properties. o comando acima, futuramente será gerado o arquivo Application_cn.properties com o seguinte conteúdo: name=u59d3u540d age=u5e74u9f84, configurado em Struts-config.xml: <message-resources parâmetro="properties.Application_cn"></ recursos de mensagem>. Neste ponto, mais da metade está basicamente feito. Então você deve escrever na página JSP. Para o rótulo do nome, você precisa escrever <bean:message key=""name"">. na página aparecerá o nome chinês, o mesmo vale para a idade, e os caracteres chineses no botão também serão processados da mesma forma.
(5) O código escrito no banco de dados está distorcido:
Solução: Configure um filtro, que é um filtro Servelet. O código é o mesmo da segunda vez.
Se você estiver conectado diretamente ao banco de dados por meio de JDBC, o código de configuração será o seguinte: jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK, para garantir que o código no banco de dados não esteja ilegível.
Se você estiver vinculando por meio da fonte de dados, não poderá escrevê-lo assim. Primeiro, você deve escrevê-lo no arquivo de configuração. O local para configurar a fonte de dados no Tomcat 5.0.19 está em C:Tomcat 5.0confCatalinalocalhost. O projeto é workshop e o diretório onde ele está localizado está em webapp. O arquivo de configuração do workshop.xml é o seguinte:
<resource name="jdbc/WorkshopDB"></resource>auth="Container"
type="javax.sql.DataSource" />
<resourceparams name="jdbc/WorkshopDB"></resourceparams>
<parâmetro></parâmetro>
<nome></nome>fábrica
<value></value>org.apache.commons.dbcp.BasicDataSourceFactory
<parâmetro></parâmetro>
<name></name>maxAtivo
<valor></valor>100
<parâmetro></parâmetro>
<name></name>maxIdle
<valor></valor>30
<parâmetro></parâmetro>
<nome></nome>maxWait
<valor></valor>10.000
<parâmetro></parâmetro>
<nome></nome>nome de usuário
<valor></valor>raiz
<parâmetro></parâmetro>
<nome></nome>senha
<valor></valor>
<parâmetro></parâmetro>
<name></name>driverClassName
<value></value>com.mysql.jdbc.Driver
<parâmetro></parâmetro>
<nome></nome>url
<valor></valor>
Preste atenção especial aos locais em negrito. É diferente do link direto para JDBC. Se você configurar corretamente, ao inserir chinês, será chinês no banco de dados. também precisa desta linha de código. Deve-se observar que alguns funcionários da recepção usam o Dreamver para escrever o código. Ao escrever um formulário, eles o alteram para um jsp. Há uma coisa a se prestar atenção: o método de envio da ação é. request, e você precisa enviá-lo, porque existem dois métodos de envio JSP: POST e GET, mas o código enviado por esses dois métodos ainda é muito diferente em termos de codificação. </bean:mensagem>< /bean:mensagem>