Tomcat 中文乱码解决方法

Tomcat 中文乱码解决方法

一、通过contentTypepageEncodingresponse.setCharacterEncoding设置网页编码(如utf-8gb2312gbk或其它编码)。比如(以gbk为例):

<%@ page contentType="text/html;charset=gbk" %>

: <%@ page pageEncoding="gbk" %>

: <% response.setCharacterEncoding ("gbk"); %>

 

二、然后根据以下情况进行具体设置以下各情况的设置互不关联):

POST数据的接收

只需在接收数据的jsp文件中设置request的字符编码格式为当前POST数据的网页编码,例如:

<% request.setCharacterEncoding("gbk"); %>

 

GET数据URL数据(如超链接)的接收

只需在Tomcat配置文件server.xmlConnector标签中设置useBodyEncodingForURItrue,或者设置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参数会影响到所有应用,故推荐设置useBodyEncodingForURItrue的方式接收数据。

 

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);

%>

jsp动作指令传递中文乱码解决(如jsp:forward、jsp:include)

只需在原页面中设置request的字符编码格式为当前网页编码即可,示例代码如下:

·原页面param.jsp代码(设网页编码为gb2312):

<%@ page contentType="text/html; charset=gb2312" language="java" %>

<% request.setCharacterEncoding("gbk"); %>

<jsp:include page="paramget.jsp?aa=my课件2kj">

<jsp:param name="bb" value="sf中文地方ghaa"/>

</jsp:include>

 

·被包含paramget.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" %>

<%

String aa=request.getParameter("aa");

String bb=request.getParameter("bb");

out.print(aa);

out.print("<br>");

out.print(bb);

%>

 

※说明:

1)在paramget.jsp中设置request为网页编码格式无用;

2)示例中可以将include换成forward等其它JSP动作指令。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值