jsp编译乱码

由于
<%include file="a.jsp"%>是在编译时加入,所谓静态,就是在编译的时候将a.jsp的代码加入进来在编译,之后运行.

<jsp:include page="a.jsp"/>是在运行时加入,所谓动态,就是单独编译,在运行时候加入进来,之后显示,这种include,可以传递参数。

所以,当我们使用<jsp:include page="a.jsp"/>,jsp已经变java,无法pageEncoding无用。<%include file="a.jsp"%>还是有用的。

——————————————
如果不加pageEoding,java文件里面乱码,页面不显示乱码。文件以gbk方式编码。
由于tomcat容器默认为“ISO-8859-1”编码方式。所以gbk的内容解码为二进制存储,再用“ISO-8859-1”编码,就乱码了(java文件),但是二进制没变,然后再网络中传输到,乱码在浏览器显示输出的时候因为系统自带的gbk编码方式,所以页面不乱码。


个人建议,每个jsp页面都加入pageEncoding,因为就算静态include能包括编码方式,但是如果一个页面内既有动态的也有静态的,由于动态的是动态加载jsp,那这种页面是一定要pageEncoding的,既然如此,都加安全一点。

推荐阅读更多精彩内容