JSP中的<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%> 和 HTML中的
-
HTML文件(不管是直接打开,还是通过服务器访问)测试结果如下:
html打开时,浏览器会用html的文件保存编码 和 HTML页面中设定的编码进行匹配,如果一样或者包含,就可以显示正常;其他则显示乱码。
例如:
1)文件保存格式为 GB2312,meta中设定为GBK,则直接用浏览器打开时,会正常显示;2)如果文件保存为GB2312,而HTML中的meta设定为ISO8859-1时,HTML显示乱码
3)文件保存格式为UTF-8时,因为utf-8是包含所有编码格式的,所有不管meta设定为什么(GBK或者ISO8859-1),页面都显示正常。
-
JSP页面进行访问是的测试结果如下:
1)JSP中有页面的保存编码的设定,即pageEncoding,如果此设定值和实际保存的文件编码不一致,有中文时肯定会出现乱码;2)<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>,对于contentType和pageEncoding的设定,如果只写了一个,则另一个的值会参考设定了的值:
即 <%@ page language=“java” contentType=“text/html; charset=UTF-8” %> 和 <%@ page language=“java” pageEncoding=“UTF-8”%>
相等于:<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
3)对于两个都设定,但是不一致时,<%@ page language=“java” contentType=“text/html; charset=GBK” pageEncoding=“UTF-8”%>,并不会导致本次相应出现乱码,只是服务器(tomcat)解析本次请求的jsp时通过UTF-8的编码进行解析,响应页面时通过GBK进行编码的解析。下次提交时可能会出现乱码(没有测试过),不建议两者设定不一致的编码格式。
4)对于一个jsp页面中即设定了<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>,又设定了时, meta的设定是无效的;
5)在jsp页面中没有设定<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>时,而设定了meta时,页面会参考的编码进行jsp页面的显示。