大家好,欢迎来到IT知识分享网。
乱码经常出现在什么位置
- 数据保存过程中的乱码
- 数据展示过程中的乱码
- 数据传递过程中的乱码
数据保存过程中的乱码
- 数据保存到数据库表中的时候,数据出现乱码
- 导致数据保存过程中的乱码包括以下两种情况:
- 前一种情况:在保存之前,数据本身就是乱码,保存到数据库表中的时候一定是乱码
- 第二种情况:保存之前,数据不是乱码,但是由于数据库本身数据库不支持简体中文,保存之后出现乱码
数据展示过程中的乱码
- 最终显示到网页上的数据出现中文乱码
- 怎么解决?
经过执行Java程序之后,Java程序负责向浏览器响应的时候,中文乱码Java程序中设置响应的内容类型,以及对应的字符字符集response.setContentType(“text/html;charset=UTF-8”);
没有经过Java程序,直接访问的是静态页面文件编码时字符集,与浏览器解析时使用的字符集要一致,例如文件编码时使用的字符集是UTF-8,那么可以在网页文件中使用<meta charset=”UTF-8″>标签来指定网页编码时使用的字符集
数据传递过程中的乱码
- 将数据从浏览器发送给服务器的时候,服务器接收到的数据时乱码
浏览器对数据进行编码发送到服务器(GET)
- GET请求的数据在请求体,所以会对部分URL进行编码
- 如何编码将表单中的数据(键值对)经过URLencode编码后追加到url中(URLencode编码过程使用的字符集由浏览器决定)
- 编码流程图

服务器接收到数据进行解码
- 如何解码以Tomcat7.0为例,Tomcat会使用默认的ISO-8859-1进行解码,此时字符集可能与浏览器端编码的字符集不同而出现乱码
- 解码流程图

浏览器对数据进行编码发送到服务器(POST)
- POST请求方式数据在请求体中
- 如何编码将表单中的数据(键值对)经过URLencode编码后放到请求体中(URLencode编码过程使用的字符集默认由网页标签属性设置决定)
- 编码流程图

服务器接收到数据进行解码
- 如何解码以Tomcat7.0为例,Tomcat会使用默认的ISO-8859-1进行解码,此时字符集可能与浏览器端编码的字符集不同而出现乱码(可通过Java程序进行字符集的设置)
- 解码流程图

解决方法
适用于POST和GET
//获取乱码字符 String value = request.getParameter("name"); //将乱码字符通过错误的ISO-8859-1编码方式重新还原回去 byte[] bytes = dname.getBytes("ISO-8859-1"); //再通过正确的编码方式进行解码 value = new String(bytes, "UTF-8");
仅支持POST请求
//设置字符编码方式 request.setCharacterEncoding("UTF-8"); //获取正确的字符 String value = request.getParameter("name");
仅支持GET
修改Tomcat默认的编码字符集
修改CATALINA_HOME/conf/server.xml文件, 加上URLEncoding="UTF-8"属性,设置请求行上的编码方式,解决GET请求乱码 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URLEncoding="UTF-8"/>
URLencode
是将字符通过某种字符集进行编码后,再使用百分号编码
如字符通过UTF-8字符集进行编码后得到的二进制文件,然后将二进制转化为16进制,在每一个字符前面加上%作为分隔
UTF-8 百分号编码 "销售部" ------> E9 94 80 E5 94 AE E9 83 A8 ------> %E9%94%80%E5%94%AE%E9%83%A8
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/185283.html