Tomcat中文乱码解决方法


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

%> 

 

 

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

动作指令。

 

 

 

 

 

tomcat+struct

中文乱码解决

 

1

、在

conf/

server.xml

文件中设置

URIEncoding

gb2312

gbk

 

 

2

、实现一个过滤器

Filter

来设置

gbk

的字符编码格式

 

webapps/servlet-examples

目录有一个完整的例子,可参考

web.xml

SetCharacterEncodingFilter

进行设

置,方法如下:

 

1

)把

webapps\

servlets-examples

\WEB-INF\classes\filters\SetCharacterEncodingFilter.class

文件

 

拷到

自己

web

应用的

\WEB-INF\classes\filters

目录下,如果没有

filters

目录,就创建一个。

 

2

)打开

conf\

web.xml

,加入如下几行:

 

……………………

 

 

 

 

<filter> 

 

 

 

 

 

 

 

 

<filter-name>Set Character Encoding</filter-name> 

 

 

 

 

 

 

 

 

<filter-class>filters.SetCharacterEncodingFilter</filter-class> 

 

 

 

 

 

 

 

 

<init-param> 

 

 

 

 

 

 

 

 

 

 

 

 

<param-name>encoding</param-name> 

 

 

 

 

 

 

 

 

 

 

 

 

<param-value>GBK</param-value> 

 

 

 

 

 

 

 

 

</init-param> 

 

 

 

 

</filter> 

 

 

 

 

<filter-mapping> 

 

 

 

 

 

 

 

 

<filter-name>Set Character Encoding</filter-name> 

 

 

 

 

 

 

 

 

<url-pattern>/*</url-pattern> 

 

 

 

 

</filter-mapping> 

</web-app> 

 

※说明:

 

1

其它

web

应用的

\WEB-INF\classes\filters

目录中也应该放置

SetCharacterEncodingFilter.class 

文件,

否则没有放置

SetCharacterEncodingFilter.class 

web

应用将无法使用。

 

2

)这种解决方法和其它解决方法不要同时使用,否则有时会出现程序不能正常运行。

 

3

)将

server.xml

web.xml

新增的内容去掉即可关闭过虑功能。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值