前沿
乱码问题是最难解决的问题。
必备工具
myeclipse2015
tomcat8
辅助工具
notepad(window的自带记事本)
Ie。。。
firefox的firebug。。。
在jsp里面如果你想把中文显示在页面上,那么必须保证所有的编码都是统一的,只要其中任何一个地方出问题都不行
这些地方包括:jsp文件的储存编码,tomcat的处理编码,http头的编码,浏览器的前端编码(这个可以自动识别)
jsp指定编码格式
<%@ page language=”java” pageEncoding=”UTF-8”%>
<%@ page contentType=”text/html;charset=UTF-8”%>
在jsp文件的顶端添上上面的代码。
第一行指定jsp源码文件的编码格式,告诉他我这个文件里面所有的汉字都是utf-8存储的
第二行是添加http响应头里面的属性,告诉浏览器,我这个包数据部分里面的东西出utf-8编码的。
还有一种情况:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
有些教材说html在head里面设置这个东西就可以是utf-8编码的。。但是根据浏览器的解析规则。如果你的http请求头里面制定了编码格式比如是GBK,那么即使你在这里指定了文件是utf-8的也不行,他会按照GKB解析你的文件。
jsp文件编码
当然。我指的就是你jsp代码文件的储存编码。。如果你用eclipse的话会看到你文件里面已经写了charset=”utf-8”会自动储存成utf-8的文件
验证方式
把你的代码保存上。然后用windows自带的记事本打开她,然后打开另存为对话框。
如果说这里是UTF-8的那么代表你已经用UTF-8存储好了。。
还有一点提醒,不要用自带的记事本写UTF-8文件,会产生很多问题。
推荐使用notepad++什么的。。
你以为这样就行了吗?当然不是,我们没有告诉tomcat返回的东西要用utf-8
tomcat的处理编码
找到tomcat的conf文件夹。可以修改server.xml文件中,相应的端口的Connector的属性:URIEncoding=”UTF-8”,这样,GET方式提交的数据才会被正确解码。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
到现在为止应该是差不多了。
验证方式
1看看浏览器是不是按照utf-8处理编码的
用ie打开URL。
然后按alt在菜单栏里面打开 查看 菜单选择编码。看看当前浏览器是不是选择在utf-8上面,如果是的话,代表浏览器已经用utf-8解码了
2查看http响应头是不是指定utf-8的编码
打开firefox。启动firebug。然后如图查看
经过这两个步骤应该就能验证出来哪里出了问题。。