关于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" %>
这样就服务器一定会是正确抓到“你好”了。
-----------------------------------------------------修整的 分割线----------------------------------------------------------
SUN官方解释(见《The Java EE 5 Tutorial 》)
Response and Page Encoding
You also use the contentType attribute to specify the encoding of the response. For example, the date application specifies that the page should be encoded using UTF-8, an encoding that supports almost all locales, using the following page directive:
- <%@ page contentType="text/html; charset=UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8" %>
If the response encoding weren’t set, the localized dates would not be rendered correctly.
To set the source encoding of the page itself, you would use the following page directive:
- <%@ page pageEncoding="UTF-8" %>
<%@ page pageEncoding="UTF-8" %>
You can also set the page encoding of a set of JSP pages. The value of the page encoding varies depending on the configuration specified in the JSP configuration section of the web application deployment descriptor (see Declaring Page Encodings).
Declaring Page Encodings
You set the page encoding of a group of JSP pages using the JSP property group configuration in the deployment descriptor by doing one of the following:
-
If you are using the Pages section of the web.xml editor pane in NetBeans IDE:
-
Expand the JSP Property Group node.
-
Enter the page encoding in the Page Encoding field.
-
If you are editing the web.xml file by hand, add a page-encoding element to the jsp-property-group element in the deployment descriptor and set it to one of the valid character encoding codes, which are the same as those accepted by the pageEncoding attribute of the page directive.
A translation-time error results if you define the page encoding of a JSP page with one value in the JSP configuration element and then give it a different value in a pageEncoding directive.
一般HTML文档有
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
来标识客户端编码,即指定访问服务器的浏览器是用什么编码.
<%@ page contentType="text/html; charset=UTF-8" %>
分享到:
相关推荐
### JSP页面中的pageEncoding与contentType两种属性的区别 在Java Server Pages(JSP)技术中,`pageEncoding`和`contentType`是两个重要的属性,它们分别控制着JSP页面的编码方式以及输出内容的类型。了解这两个...
在JSP(Java Server Pages)开发中,pageEncoding和contentType是两个非常重要的属性,它们对于网页的显示和数据处理起着关键作用。理解这两个属性的区别和联系是确保网页内容正确显示和数据安全传输的基础。 首先...
1. **移除 `date.jsp` 中的 `contentType` 设置**:最简单的方法是将 `date.jsp` 中的 `contentType` 属性移除,只在 `test.jsp` 主页面中设置。 2. **使用 `<jsp:include>` 替代 `<%@ include %>`**:使用 `<jsp:...
因此,在 jsp 页面中需要设置 pageEncoding 和 contentType 两个地方的编码方式。 在第一次访问一个 jsp 页面开始,到这个页面被发送到客户端,这个 Jsp 页面要经过三次编码转换: 第一阶段是 jsp 编译成 .java,...
为了解决这些问题,我们需要深入理解JSP中的`contentType`和`pageEncoding`这两个关键属性。 首先,`contentType`属性是用于定义JSP生成的HTML页面在浏览器中的字符编码。它告诉浏览器如何解析和显示接收到的内容。...
这里,`contentType`定义了页面的MIME类型和字符集,`pageEncoding`指定了JSP源文件的编码。将`pageEncoding="ISO-8859-1"`改为`pageEncoding="GBK"`,可以确保该JSP文件内部的编码方式与乱码问题相匹配。然而,这种...
为了避免这种情况的发生,可以通过以下两种方式设置JSP页面和浏览器使用统一的字符集: - **在JSP页面中设置字符集:** ```jsp <%@ page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %> ``` ...
JSP还支持EL(Expression Language),这是一种轻量级的脚本语言,用于在JSP页面上访问和操作JavaBean属性。虽然在上述示例中我们没有使用EL,但在更复杂的应用场景中,它能简化代码,提高可读性。例如,如果你有一...
在JavaServer Pages (JSP) 技术中,创建一个包含多个提交按钮的页面是常见的需求,每个按钮可能对应不同的处理逻辑,比如提交到不同的后端Servlet或执行不同的操作。本示例着重讲解如何在JSP页面中实现多个提交按钮...
在客户端生成Word文档有两种常见方法: 1. **直接在客户端生成Word文档**:这种方法通常涉及使用JavaScript或者其他客户端脚本来生成Word文档。例如,可以使用JavaScript库如`docx.js`等来实现这一目标。 2. **...
在JSP中,`charset`和`pageEncoding`属性是关于字符编码的重要设置。 - `charset=GB18030`定义了HTTP响应体(即浏览器接收到的内容)的字符集,意味着浏览器将以GB18030编码解码页面内容。 - `pageEncoding="GB...
JSP提供了两种方式来包含其他文件: 1. **静态包含**:使用 `<%@ include file="file_path" %>`,这种方式在编译阶段完成,适合包含静态资源。 2. **动态包含**:使用 `<jsp:include page="file_path" flush="true...
指令元素主要有两种:页面指令和包含指令。 **页面指令(page)**是最常见的JSP指令,用于设置整个JSP页面的全局属性。例如: - `language`属性定义JSP页面使用的编程语言,默认是Java。 - `import`属性允许引入...
在IT领域,jQuery和JSP(JavaServer Pages)是两种非常重要的技术,广泛应用于Web开发。本教程将探讨这两者如何结合使用实现局部动态刷新,以及如何与数据库交互以实现数据的动态更新。 jQuery是一个轻量级的...
JSP(JavaServer Pages)和HTML是两种常见的Web开发语言,它们在构建动态网页时发挥着各自的作用。本篇将详细介绍如何使用JSP和HTML来实现页面跳转。 一、JSP页面跳转 1. **隐式转发(Internal Forward)**:在同...
解决JSP 中文显示问号问题的方法有两种:一种是在 Eclipse 中设置 Encoding 选项,另一种是修改 JSP 文件的编码方式。 方法一:在 Eclipse 中设置 Encoding 选项 在 Eclipse 中,可以通过设置 Encoding 选项来解决 ...
接下来,我们来看看两种常见的JSP页面乱码情况及其解决方案: 1. **未指定使用字符集编码**: 当JSP页面中包含中文字符,但没有明确指定字符集时,浏览器会默认使用ISO-8859-1编码,导致乱码。解决这个问题的方法...
JSP页面指令定义了页面的属性和行为。主要包括以下几种: 1. **`<%@ page %>` 指令**: - `autoFlush`:设置输出缓冲是否自动刷新。 - `buffer`:设置输出缓冲区大小。 - `language`:设置脚本语言,默认为Java...
例如,以下JSP文件头部定义了两种不同的编码方式: ```jsp <%@ page pageEncoding="UTF-8" contentType="text/html; charset=GBK" %> ``` 这里,`pageEncoding` 设为 `UTF-8` 表示JSP文件本身采用UTF-8编码,而 `...
Apache Tomcat和JSP是Java Web开发中两个关键的组件,它们共同构成了高效且灵活的网站平台搭建基础。本文将详细介绍如何使用Apache Tomcat服务器和JSP(Java Server Pages)技术来构建一个功能完备的网站环境。 ...