JSP中的pageEncoding和contentType属性

  关于JSP页面中的pageEncoding和contentType两种属性的区别:

  pageEncoding是jsp文件本身的编码

  contentType的charset是指服务器发送给客户端时的内容编码

  JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。

  第一阶段是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" %>

  大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。

  但是如果更改为

<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>

  这样就服务器一定会是正确抓到“你好”了。

时间: 2024-09-13 21:12:01

JSP中的pageEncoding和contentType属性的相关文章

JSP页面pageEncoding和contentType属性_java

JSP要经过两次的"编码",第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType. 关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码 contentType的charset是指服务器发送给客户端时的内容编码 JSP要经过两次的"编码",第一阶段会用pageEncoding,第二阶段会用utf-8至

java中PageEncoding和ContentType属性

JSP页面中的PageEncoding和ContentType两种属性的区别是什么呢?我们先来看一下: PageEncoding: 是JSP文件本身的编码 ContentType: ContentType 属性指定响应的 HTTP 内容类型.如果未指定 ContentType,默认为 text/HTML. 的charset是指服务器发送给客户端时的内容编码 JSP要经过两次的"编码",第一阶段会用PageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出

jsp-JSP中设置table的border属性无效

问题描述 JSP中设置table的border属性无效 下面是我设置的代码: <table border="100px" bordercolor="green"> <tr> <td> ID </td> <td> 标题 </td> <td> 描述 </td> <td> 价格 </td> <td> 数量 </td> <td

实例讲解在JSP开发中的对象和范围属性

js|对象 在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,session对象在会话期间内,可以在多个页面中被访问.application对象在整个Web应用程序的生命周期中都可以被访问.在JSP中,有4种范围,如下所示. ·page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中.在这个范围内的对象,只能在创建对象的

浅析JSP开发中的对象和范围属性

在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,session对象在会话期间内,可以在多个页面中被访问.application对象在整个Web应用程序的生命周期中都可以被访问.在JSP中,有4种范围,如下所示. ·page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中.在这个范围内的对象,只能在创建对象的页面中访问.

jsp自定义标签-jsp中怎么自定义一个有onclick这样属性的标签啊?

问题描述 jsp中怎么自定义一个有onclick这样属性的标签啊? 哪位大虾可以告诉菜鸟,怎么在自定义的标签中定义一个可以调用jQuery里面方法的属性哇,就像onclick那种. 解决方案 自定义一个很简单的JSP标签 解决方案二: 正所谓自定义,就是在jsp里面定义一套你的规范的标签,在服务端去根据规则去翻译成html代码,再响应给浏览器解析,你定义的标签,在给浏览器的时候都一样的html,那么问题就来了, 你可以定义你的事件,然后翻译成html的onclick事件就可以啊,这是鄙人的理解.

jsp标签-Jsp中EL表达式可以放在表单的name属性里吗?

问题描述 Jsp中EL表达式可以放在表单的name属性里吗? Jsp中EL表达式可以放在表单的name属性里吗? 例如: <input name=""${question.id}"" /> 目的是为了根据id取得question对应answer,求大神帮忙 解决方案 那你弄个隐藏域就可以了,, 解决方案二: 是可以这样放的,,, 解决方案三: 我没试过,应该是可以的

myclipse10在jsp中提交表单出现中文乱码

问题描述 myclipse10在jsp中提交表单出现中文乱码 在Myclipse10中,jsp提交了一个表单, 提交到另一个表单后,用 (String)request.getParameter(""stuname"") 获取时出现了中文乱码,无法显示正常的汉字;jsp字体已经设置为utf-8,也写了request.setCharacterEncoding(""utf-8"");求问题原因. 解决方案 jsp头是这样吗? <

JSP中调用java类,系统找不到指定文件

问题描述 JSP页面中调用后台的java类,java类中想读取某个路径的文件,但是系统提示找不到指定的路径我大概知道估计是Web页面通过tomcat服务器后路径问题但不知道怎么解决而且调用的这个java类是个普通类不是servlet,不用request希望高手帮小弟解决一下JSP:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%&