关于项目中的乱码问题:
1 乱码经常出现在什么位置?
* 数据"传递"过程中的乱码
* 数据"展示"过程中的乱码
* 数据"保存"过程中的乱码
2 数据保存过程中的乱码?
-最终保存到数据库中的时候,出现乱码
-导致数据保存中的乱码有以下两种情况:
-第一种情况:保存之前数据本事就是乱码,保存到数据库中一定是乱码
-第二种情况:保存之前数据不是乱码,但由于数据库不支持简体中文出现乱码
3 数据展示过程中的乱码?
-最终显示到网页上出现乱码
-经过Java程序之后,Java程序负责向浏览器响应的时候,中文出现乱码
-解决办法:
-设置相应内容类型,以及对应的字符编码方式:
response.setContentType("text/html;charset=UTF-8");
-没有经过Java程序,HTML页面程序乱码
<meta content="text/html;charset=UTF-8">
4 数据传送过程中的乱码?
-将数据从浏览器发送给服务器的时候,服务器接收到的是乱码。
-解决方案:
-第一种解决方案:万能方式: 既能解决POST请求乱码,也可以解决GET请求乱码
- 先将服务器中接收到的数据采用ISO-8859-1的方式解码回归原始状态
再给定一种支持简体中文的编码方式进行重新编码组装 代码如下【组装的编码方式应该与浏览器编码方式相同】
byte[] bytes=dname.getBytes("ISO-8859-1");//解码
dname=new String(bytes,"GBK");//编码,GBK应与浏览器编码相同
-第二种解决方案:【只支持POST请求,对请求体编码】
-调用request的setCharacterEncoding()方法,告诉tomcat服务器请求体中的内容使用utf-8编码
代码:
request.setCharacterEncoding("UTF-8");
String dname=dname.getParameter("dname");
-以上代码必须在request中获取任何数据之前有效果
-第三种解决方案: 专门解决GET请求的编码问题【这种方式只对请求行进行编码】
-修改CATALINA_HOME/conf/server.xml文件
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
Connector标签能够编写的属性:
CATALINA_HOME\webapps\docs\config\http.html
port 端口
maxThreads Tomcat服务器最高支持并行线程数,默认支持数200
URIEncoding 设置请求行上的编码方式解决GET请求乱码
1 乱码经常出现在什么位置?
* 数据"传递"过程中的乱码
* 数据"展示"过程中的乱码
* 数据"保存"过程中的乱码
2 数据保存过程中的乱码?
-最终保存到数据库中的时候,出现乱码
-导致数据保存中的乱码有以下两种情况:
-第一种情况:保存之前数据本事就是乱码,保存到数据库中一定是乱码
-第二种情况:保存之前数据不是乱码,但由于数据库不支持简体中文出现乱码
3 数据展示过程中的乱码?
-最终显示到网页上出现乱码
-经过Java程序之后,Java程序负责向浏览器响应的时候,中文出现乱码
-解决办法:
-设置相应内容类型,以及对应的字符编码方式:
response.setContentType("text/html;charset=UTF-8");
-没有经过Java程序,HTML页面程序乱码
<meta content="text/html;charset=UTF-8">
4 数据传送过程中的乱码?
-将数据从浏览器发送给服务器的时候,服务器接收到的是乱码。
-解决方案:
-第一种解决方案:万能方式: 既能解决POST请求乱码,也可以解决GET请求乱码
- 先将服务器中接收到的数据采用ISO-8859-1的方式解码回归原始状态
再给定一种支持简体中文的编码方式进行重新编码组装 代码如下【组装的编码方式应该与浏览器编码方式相同】
byte[] bytes=dname.getBytes("ISO-8859-1");//解码
dname=new String(bytes,"GBK");//编码,GBK应与浏览器编码相同
-第二种解决方案:【只支持POST请求,对请求体编码】
-调用request的setCharacterEncoding()方法,告诉tomcat服务器请求体中的内容使用utf-8编码
代码:
request.setCharacterEncoding("UTF-8");
String dname=dname.getParameter("dname");
-以上代码必须在request中获取任何数据之前有效果
-第三种解决方案: 专门解决GET请求的编码问题【这种方式只对请求行进行编码】
-修改CATALINA_HOME/conf/server.xml文件
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
Connector标签能够编写的属性:
CATALINA_HOME\webapps\docs\config\http.html
port 端口
maxThreads Tomcat服务器最高支持并行线程数,默认支持数200
URIEncoding 设置请求行上的编码方式解决GET请求乱码