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

来源:互联网 发布:linux vi移到行尾 编辑:程序博客网 时间:2024/05/17 18:42

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">
原创粉丝点击