前端js对中文乱码问题的解决:中文编码
decodeURI(String name);对整个URL进行编码
decodeURIComponent(uriComponent);对部分字段进行编码
服务器端对中文乱码问题的解决 解码
1、浏览器和服务器间传输数据的乱码
服务器端编码,将客户端传过来的数据进行解码:浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。
最简单方式:
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
2、比较好的解决方案:
// 必须在获取参数之前,调用如下方法先解码
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
3、比较通用方案:在一个Filter中更改所有请求的编码方式:
在src中添加filter来设置编码格式是中文,SetCharacterEncodingFilter.java文件
在 web.xml 中配置 filter ,具体配置如下页:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
通过修改上面的方法只能解决POST提交方式的请求编码,对GET无效。那么,GET提交方式中文乱码解决方法如下。
4、TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在conf\server.xml文件中设置如下
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
在后台解决中文乱码:
5、String name = URLDecoder.decode(name,"UTF-8");
6、在web.xml文件中解决整个工程编码的解决方案:
<!-- 解决工程编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>