1
Tomcat 中文乱码解决方法
一、通过 contentType、pageEncoding 或 response.setCharacterEncoding设置网页编码 (如 utf-8 、gb2312、
gbk 或其它编码) 。比如(以 gbk 为例):
<%@ page contentType="text/html;charset=gbk" %>
或 : <%@ page pageEncoding="gbk" %>
或 : <% response.setCharacterEncoding ("gbk"); %>
二、然后根据以下情况进行具体设置 (以下各情况的设置互不关联 ):
◆ POST 数据 的接收
只需 在接收数据的 jsp 文件中设置 request 的字符编码格式为当前 POST 数据的网页编码,例如:
<% request.setCharacterEncoding("gbk"); %>
◆ GET 数据 和 URL 数据 (如超链接)的接收
只需在 Tomcat 配置文件 server.xml 的 Connector 标签中设置 useBodyEncodingForURI 为 true,或者设置
URIEncoding 为提交数据的网页编码。例如:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
useBodyEncodingForURI="true" 或 URIEncoding="gbk" />
如果采用 useBodyEncodingForURI="true" ,则需要在接收数据的 jsp 文件中设置 request 的字符编码格式
为当前网页编码,例如(设当前网页编码为 gbk):
<% request.setCharacterEncoding("gbk"); %>
※URIEncoding 参数会影响到所有应用,故推荐设置 useBodyEncodingForURI 为 true 的方式接收数据。
◆ response.sendRedirect中文乱码解决
1、如果涉及 POST 数据 、GET 数据 或 URL 数据 ,需保证能正常接收;
2、然后采用以下某种方法对发送数据进行编码变换:
方法 1:将发送数据的编码转换为 ISO-8859-1
示例代码:
<%
String aa="s 中国 ff";
aa=new String(aa.getBytes("GBK"),"ISO-8859-1"); // 用于 gbk 的网页编码
aa=new String(aa.getBytes("utf-8"),"ISO-8859-1"); // 用于 utf-8 的网页编码
response.sendRedirect("b2.jsp?a="+aa);
%>
方法 2:将发送的数据用 java.net 包中的 URLEncoder 类的 encode方法进行 URL 编码
示例代码:
<%
String aa="s 中国 ff";
aa=java.net.URLEncoder.encode(aa); // 用于 gbk 的网页编码
aa=java.net.URLEncoder.encode(aa,"utf-8"); // 用于 utf-8 的网页编码
response.sendRedirect("b2.jsp?a="+aa);
%>