您的位置:首页 > 其它

学习中遇到的中文乱码问题。

2017-10-26 21:03 204 查看

JavaWeb技术下,Tomcat作为容器,发送请求的时候出现乱码问题。之所以出现乱码,主要是由于编码和解码采用的方法不同。因此保证编码解码格式一致是避免乱码发生的重要前提。

1.Post请求方式的

针对Post方式提交的请求如果出现乱码,可以每次在request解析数据时设置编码格式:

request.setCharacterEncoding("utf-8");


也可以使用编码过滤器来解决,最常用的方法是使用Spring提供的编码过滤器:

在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>


注:这最后的

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>


指的是范围,可以用/*表示的是所有的都过滤,也可以指定.do结尾的过滤。

2、针对Get方式的乱码问题

修改Tomcat安装目录下conf子目录下的server.xml文件(解决get方式) 【注:记得先停掉服务器】

找到文件中类似这样的段落:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>


在里面加上这样一段:URIEncoding=”UTF-8” 即变成下面这段

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />


最后重启Tomcat即可。

3.【注】为了避免您的测试与我给的解决方案结果不符,请在项目编码格式为utf-8

jsp页面

pageEncoding="utf-8"


html页面

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: