16.程序乱码解决方案
1.乱码经常出现的位置:
*数据“展示”过程中的乱码。
*数据“传递”过程中的乱码。
*数据“保存”过程中的乱码。
2.数据展示过程中的乱码:
-最终显示到网页上的数据出现中文乱码。
第一种情况:执行java程序之后,java程序负责向浏览器响应的时候出现中文乱码:
-解决:设置响应的内容类型,以及对应的字符编码方式。
response.setContentType("text/html;charset=UTF-8");
第二种情况:没有执行java程序,直接访问html页面,出现中文乱码:
* <meta content="text/html;charset=UTF-8">/<meta charset="UTF-8">
3.数据传递过程中的乱码:
【产生原因】
-将数据从浏览器发送给服务器的时候,服务器收到的数据是乱码。
-任何国家的文字,数据从浏览器发送给服务器的时候,都会采用ISO-8859-1编码。
-ISO-8859-1是国际标准码,不支持中文编码,兼容ASCII码,又被称为latin1编码
-浏览器发送数据给服务器:dname=%E5%B8…(ISO-8859-1编码),服务器不知道这段编码之前是什么文字。
第一种解决方案:万能方式,既能够解决POST请求乱码,又能解决GET请求乱码。
先将服务器中接收到数据采用ISO-8859-1编码方式解码
byte[] bytes=dname.getBytes("ISO-8859-1");
再给定一种支持简体中文的编码方式重新编码组装。【和浏览器的编码方式编码方式相同】
String s=new String(bytes,"UTF-8");
第二种解决方案【只适合POST请求】
request.setCharacterEncoding("UTF-8");//对请求体中的数据采用指定方式进行编码【POST请求】
String dname=request.getParameter("dname");
第三种解决方案【只适合GET请求】
修改CATALINA_HOME/conf/server.xml文件
在<Connector />中添加 URIEncoding="UTF-8"
4.数据保存过程中的乱码
-最终保存到数据库表中的时候。数据出现乱码。
第一种情况:在保存之前,数据本身就是乱码,保存到数据库中的时候一定是乱码。
第二种情况:保存之前不是乱码,但是数据库本身不支持简体中文,保存之后出现乱码。