乱码常常出现在哪些位置数据保存过程中的乱码数据展示过程中的乱码
经过执行Java程序以后,Java程序负责向浏览器响应的时侯linux tomcat 中文乱码,英文乱码Java程序中设置响应的内容类型,以及对应的字符字符集response.setContentType(“text/html;charset=UTF-8”);
没有经过Java程序linux tomcat 中文乱码,直接访问的是静态页面文件编码时字符集,与浏览器解析时使用的字符集要一致,比如文件编码时使用的字符集是UTF-8redhat linux 9.0,这么可以在网页文件中使用标签来指定网页编码时使用的字符集
数据传递过程中的乱码浏览器对数据进行编码发送到服务器(GET)GET恳求的数据在恳求体,所以会对部份URL进行编码怎么编码将表单中的数据(通配符对)经过URLencode编码后追加到url中(URLencode编码过程使用的字符集由浏览器决定)编码流程图
服务器接收到数据进行解码怎么解码以Tomcat7.0为例,Tomcat会使用默认的ISO-8859-1进行解码linux操作系统安装,此时字符集可能与浏览器端编码的字符集不同而出现乱码解码流程图
浏览器对数据进行编码发送到服务器(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请求乱码
URLencode
是将字符通过某种字符集进行编码后,再使用百分号编码
如字符通过UTF-8字符集进行编码后得到的二补码文件,之后将二补码转化为16补码,在每一个字符后面加上%作为分隔
UTF-8 百分号编码
"销售部" ------> E9 94 80 E5 94 AE E9 83 A8 ------> %E9%94%80%E5%94%AE%E9%83%A8