ssm中乱码问题解决:
在web.xml中加入:
<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>
以上可以解决post请求乱码问题。
对于get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一种方法对参数进行重新编码:
String userName new
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
总结:response对象输出中文,产生乱码。
* 字节
* 解决方案
* 设置浏览器打开文件时采用的编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
* 获取字符串的byte数组采用的编码
"哈罗我的".getBytes("UTF-8")
* 字符
* 解决方法
* 设置浏览器打开文件时采用的编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
* 设置response缓冲区的编码
response.setCharacterEncoding("UTF-8");
* 简写的方式(等于上面的两句)
* response.setContentType("text/html;charset=UTF-8");
request 中文乱码
*get
1. 最简写的方式:
new String(username.getBytes(''ISO-8859-1"),"UTF-8")
2. 逆向编解码
浏览器会帮你先编码一次,逆向重新编码
*post (经常使用)
setCharacterEncoding(“UTF-8”) 设置request缓冲区的编码