中文乱码问题及解决方法
在页面中出现乱码,是由于字符编码格式对中文的支持所导致的,或者是入库数据和出库数据编码格式不一致导致的。
当前使用Tomcat 7.0.82
字符编码的种类
常见的字符编码对中文的支持:
编码格式 | 收录的字符 |
---|---|
iso-8859-1 | 不支持中文 |
gbk2312 | 常用的简体汉字 |
gbk | 简体汉字和繁体汉字 |
utf-8 | 所有国家需要的字符 |
JSP页面设置编码支持中文
为了使JSP页面很好的支持中文,在Jsp页面设置字符编码格式为:charset=”UTF-8” ,页面也设置为其他支持中文格式的编码。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
HTML页面设置编码支持中文
为了使HTML页面很好的支持中文,在Jsp页面设置字符编码格式为:charset=”UTF-8”
<META http-equiv=Content-Type content="text/html;charset=utf-8">
get请求乱码问题解决
get请求由于参数是通过URL传递的。当保证获取数据页面和接受数据页面格式为utf-8时。
get请求解决乱码治标的方法
由于Tomcat7默认的iso-8859-1的编码,要将iso-8859-1编码格式转换为utf-8的格式
String str = request.getParameter("user");
String user = new String(str.getBytes("iso-8859-1"),"utf-8");
get请求解决乱码治本的方法
直接通过Tomcat目录下/conf/server.xml配置文件来解决。
<!--添加URIEncoding="utf-8" 来解决get请求乱码问题 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
注意: Tomcat7默认的iso-8859-1的编码,Tomcat8默认的是utf-8的编码,当Tomcat8版本时就可以不设置。
post请求乱码问题解决
当post请求时,会将jsp转换为servlet文件,所以就是相当于设置servlet的请求和响应的编码格式。
JSP文件的执行流程可以参考:http://blog.csdn.net/zx6571269/article/details/78462985
- 设置tomcat编码格式,与get请求设置一样
- 当接受请求时设置resquest编码格式
request.setCharacterEncoding(“utf-8”);
- 当响应时设置response编码格式
response.setCharacterEncoding(“utf-8”);