解决JSP页面乱码,理解pageEncoding、contentType属性设置
来源:互联网 发布:卫生系统网络直报 编辑:程序博客网 时间:2024/06/14 13:11
在Jsp页面中合理的设置pageEncoding、contentType属性,能够解决日常遇见的页面乱码问题,下面就pageEncoding和contentType两种属性的分别,进行简单阐述一下:
1、pageEncoding是JSP文件默认的编码属性。
2、contentType中charset是指远程服务器端发送给本地客户端时的内容编码格式。
在页面传输过程中Jsp要经过三次两种形式的编码:
第一次编码会用pageEncoding;
第二次编码会用utf-8至utf-8;
第三次编码就是由TOMCAT解释输出的网页,用contentType的charset编码。
第一次编码是Jsp编译成.java文件时,会根据pageEncoding的设定读取Jsp文件,结果是根据指定的编码方案翻译成统一的UTF-8格式的JAVA源码(即所谓的.java),如果pageEncoding设定错了,或是没有设定,出来的就是中文乱码。
第二次编码是由Javac的JAVA源码到Java byteCode的编译,不管JSP编写时候用的是什么编码方案,经过这个阶段的处理,结果全部是UTF-8的encoding的java源码了。
JAVAC用UTF-8的encoding读取java源码数据,编译成UTF-8 encoding的二进制码(即.class)形式,这是就JVM对常数字串在二进制码(java encoding)内表达的规范。
第三次编码是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在第一次编码和第二次编码的参数contentType就发挥了作用了。
contentType的常规设定:
pageEncoding和contentType的预设都是ISO8859-1,只要设定了其中一个, 另一个也就变成一样的了,(TOMCAT4.1.27是如此)。 但这不是一定绝对的, 这要看各自JSPC的处理方式, 然而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, 比如:pageEncoding=GB2312并不等于contentType=utf-8。
然而Jsp文件不像.java,.java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ue中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。
可是Jsp文件并不是这样的编码,没有默认转码过程,主要我们指了pageEncoding就可以实现正确转码了。
下面是个简单的示例:
<%@ page contentType="text/html;charset=utf-8" %>
基本上绝大多数会打印出乱码,因为输入的“学习Java”是gbk的,但是服务器是否正确抓到“学习Java”还是未知的。。
试着把上面代码改成:
<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>
传输到服务器后,服务器才能正确抓到“学习Java”,且也不会出现乱码。
- 解决JSP页面乱码,理解pageEncoding、contentType属性设置
- 解决Jsp乱码----在Jsp页面中合理的设置pageEncoding、contentType属性
- JSP pageEncoding和contentType属性
- JSP中的pageEncoding和contentType属性(转)
- JSP中的pageEncoding和contentType属性区别
- JSP中的pageEncoding和contentType属性
- JSP中的pageEncoding和contentType属性
- JSP中的pageEncoding和contentType属性
- JSP之pageEncoding和contentType属性讲解
- JSP中的pageEncoding和 contentType属性
- JSP中的pageEncoding和contentType属性
- 浅谈JSP中的PageEncoding和ContentType属性
- JSP中的pageEncoding和contentType属性
- JSP中的pageEncoding和contentType属性(转)
- JSP中的pageEncoding和contentType属性
- JSP中的pageEncoding和contentType属性
- JSP pageEncoding和contentType属性区别
- JSP中pageEncoding和ContentType属性作用
- alter表来设定primary key
- Linux 线程模型的比较:LinuxThreads 和 NPTL
- show.php程序
- ASP中判断提交页面的数值,并且给予相应的结果的方法
- struts+hibernate分页实现
- 解决JSP页面乱码,理解pageEncoding、contentType属性设置
- 关于window.XMLHttpRequest
- [转载]网络命令一览表(绝对实用)
- First Look at Silverlight 2--Part2:使用Layout层管理
- 关于二线和四线的基本概念
- Linux下Socket编程的端口问题( Bind(): Address already in use )
- Project的sources文件(vs2005)
- InstallShield制作JSP+TOMCAT+JDK+MYSQL(第三篇)
- 基于FPGA的FFT处理器设计