`
逆风的香1314
  • 浏览: 1432167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSP页面的contentType和pageEncoding的差异

阅读更多
 

contentType -- 指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码.
就是 Mozilla的 Character encoding, 或者是 IE6的 encoding. 例如 JSPtw Forum 用的contentType就是 Big5.

pageEncoding -- 指定JSP编写时所用的编码
如果你的是 WIN98, 或 ME 的NOTEPAD记事本编写JSP, 就一定是常用的是Big5 或 gb2312, 如果是用 WIN2k winXP的
NOTEPAD时, SAVE时就可以选择不同的编,码, 包括 ANSI(BIG5/GB2312)或 UTF-8 或 UNIONCODE(估是 UCS 16).

因为 JSP要经过 两次的"编码",
第一阶段会用 pageEncoding, 第二阶段会用 utf-8 至utf-8, 第三阶段就是由TOMCAT出来的网页, 用的是contentType.

阶段一是 JSPC的 JSP至JAVA(.java)原码的"翻译", 它会跟据 pageEncoding 的设定读取JSP. 结果是 由指定的
pageEncoding(utf-8,Big5,gb2312)的JSP 翻译成统一的utf-8 JAVA原码(.java). 如果pageEncoding设定错了, 或没设定
(预设 ISO8859-1), 出来的 在这个阶段 就已是中文乱码.

阶段二是由 JAVAC的JAVA原码至JAVA BYTECODE的编译. 不论JSP的编写时是用(utf-8,Big5,gb2312),经过阶段一的结果全
都是utf-8的ENCODING的JAVA原码.
JAVAC用 utf-8的ENCODING读取AVA原码, 编译成字符串是 utf-8 ENCODING的二进制码(.class). 这是 JAVA VIRTUAL MACNHINE
对常数字符串在 二进制码(JAVA BYTECODE)内表逹的规范.

阶段三是TOMCAT(或其的application container)加载和执行阶段二得来的JAVA二进制码, 输出的结果( 也就是BROWSER(客户端))
见到的. 这时一早隐藏在阶段一和二的参数contentType, 就发挥了功效. (见 阶段一的 ).

response.setContentType("text/html; charset=utf-8");

出来的可以是 utf-8, Big5, gb2312, 看的就是JSP ? contentType的设定.

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

还有, pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此).
但这不是绝对, 看的各自JSPC的处理方式. 而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示,
(例pageEncoding=Big5 不等于 contentType=utf-8).

一个简单的解决方法是在包含和被包含文件的开始部分都加上:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

分享到:
评论

相关推荐

    PageEncoding&contentType中charset区别

    在Web开发中,尤其是使用Java Server Pages(JSP)进行页面渲染时,经常会遇到`pageEncoding`和`contentType`属性,并且它们都涉及到`charset`这一概念。正确理解这些属性及其之间的差异对于确保网页内容能够被正确...

    怎么解决JSP页面中文问题20100901

    当这两行都存在时,需要保持`pageEncoding`和`contentType`中的字符集一致,以便正确处理中文字符。 2. **统一浏览器的解码设置** 在HTML头部可以通过`;charset=UTF-8"&gt;`来指定浏览器解读HTML文档的编码格式。...

    导出jsp页面为excel文档

    - **兼容性问题**:不同浏览器对MIME类型和响应头的处理可能存在差异,因此在实际部署前最好进行多浏览器测试。 - **文件大小限制**:浏览器对通过这种方式接收的文件大小通常有限制,过大的文件可能导致无法正常...

    jsp页面乱码处理

    如果你的应用基于Struts2框架,需要在`struts.properties`文件中设定合适的编码属性,确保国际化资源文件和页面编码一致。 ```properties struts.i18n.encoding=UTF-8 struts.locale=zh_CN ``` 同时,调整Struts2...

    servlet与jsp的区别

    本文将深入探讨servlet与JSP之间的差异,并解释这些差异是如何影响它们的应用场景和技术实现的。 #### 1. 定义与基本概念 - **Servlet**:Servlet是一种服务器端的Java应用程序接口(API),用于扩展服务器的功能...

    JSP在Servlet中的几个编码的作用及原理 .txt

    假设有一个简单的JSP页面,其源代码编码格式为GBK,但是页面中指定了`pageEncoding="UTF-8"`,并且在页面中使用了中文字符。此时,如果客户端使用IE浏览器访问该页面,则可能出现以下情况: - 如果没有设置`...

    JSP运行内幕

    以下是一个简单的JSP页面示例`HelloWorld.jsp`,并对其编译和执行过程进行详细分析: 1. **原始JSP页面**:`HelloWorld.jsp` ```jsp &lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1" ...

    JSP乱码问题相关的一些集锦

    1. **检查JSP页面**:确认页面头部是否正确设置了`&lt;%@ page %&gt;`指令和`&lt;meta&gt;`标签。 2. **检查数据库连接**:确保连接字符串中包含了正确的编码参数。 3. **检查Tomcat配置**:检查`server.xml`文件中是否设置了...

    JSP在Servlet中的几个编码的作用及原理

    在JSP文件中,`pageEncoding`属性用于指定JSP页面在被编译成Servlet时所采用的字符编码。这一属性对于确保JSP内部定义的字符串能够正确显示具有关键作用。如果JSP文件的实际编码与其`pageEncoding`属性设置的编码不...

    JSP中的编译指令和动作指令的两点区别

    1. **`&lt;%@ page ... %&gt;`**:这是最基础的编译指令,用来设置JSP页面的属性,如编码(`pageEncoding`)、内容类型(`contentType`)、错误页面(`errorPage`)等。例如,`&lt;%@ page language="java" contentType="text...

    JSP生成验证码

    本文将详细介绍如何使用Java Server Pages (JSP) 技术来生成和验证验证码。 #### 二、验证码生成流程 验证码的生成与验证通常分为三个步骤: 1. **生成验证码图像**:通过服务器端动态生成包含随机字符串的图像。...

    JavaWeb期末考试题必过宝典.docx

    ### JavaWeb期末考试题必过宝典知识点梳理 #### 一、Servlet的生命周期与Servlet和CGI的区别 **Servlet的生命周期:** ...这些动作元素使得JSP页面更加灵活和强大,能够轻松实现复杂的业务逻辑处理。

    jstl使用手册

    - **起源**: 由于早期JSP页面中频繁使用自定义标签导致代码冗余和非标准化问题,因此Sun公司推出了JSTL作为解决方案。 - **维护者**: Apache Jakarta组织负责维护Sun公司发布的JSTL标准版本。 - **版本差异**: -...

    js中如何引用EL表达式.txt

    1. **编码问题**:确保所有涉及到字符编码的地方(如`contentType`和`pageEncoding`)都设置为相同的编码格式,以避免乱码问题。 2. **安全考虑**:直接将EL表达式的值插入到JS代码中可能会引入XSS攻击的风险,因此...

    jsp数据库大全

    在Web开发中,Java Server Pages (JSP) 是一种广泛使用的服务器端脚本技术,它允许开发者在HTML页面中嵌入Java代码来动态生成网页内容。对于大多数Web应用程序而言,与数据库进行交互是一项基本需求。本文将详细介绍...

    Ajax uri 乱码问题总结

    - **JSP页面**:在JSP页面中,使用`pageEncoding`和`contentType`属性指定编码: ```jsp &lt;%@ page pageEncoding="GBK"%&gt; &lt;%@ page contentType="text/html; charset=GBK" %&gt; ``` 3. **Ajax请求**: - 当通过...

    Java乱码问题解决

    假设我们有一个简单的JSP页面`test.jsp`,用于测试客户端提交数据时的乱码问题。页面顶部已设置了正确的字符集: ```jsp &lt;%@ page contentType="text/html;charset=GBK" %&gt; ``` 页面内容如下: ```jsp String ...

    js日历控件

    这段代码告诉JSP引擎,该页面的字符集为UTF-8,这将确保页面中的所有文本(包括JS日历控件显示的文本)都按照UTF-8进行解析和显示。如果项目中使用了其他字符集,如GBK,那么应相应地修改`charset`属性的值。 除了...

    Java编程中的中文问题.pdf

    在JSP页面中,设置正确的`pageEncoding`和`contentType`可以有效解决此问题。此外,对于处理表单提交数据时,也需要注意获取的请求数据的编码问题,可能需要使用`request.setCharacterEncoding("GBK")`来设置请求的...

    AJAX乱码解决大全.doc

    - **JSP页面头部设置**:在每个JSP页面的开头添加`&lt;%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %&gt;`,确保页面输出与处理的一致性。 #### 资源文件乱码规避 资源文件...

Global site tag (gtag.js) - Google Analytics