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-11-13 15:10:25

JSP页面中 pageEncoding contentType的区别的相关文章

servlet-求助啊怎么将数据库里读出的价格gprice显示到这个购物车的jsp页面中

问题描述 求助啊怎么将数据库里读出的价格gprice显示到这个购物车的jsp页面中 这是我的代码,但是不会修改价格那个label,应该将我自己数据库的数据怎么贴进去,当我点击+或者-来选择数量的时候,后面的价格会跟着变,总价也会跟着变呢 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="Db.Db&q

jsp页面-如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢?

问题描述 如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢? 如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢? 解决方案 try { String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInp

JSP页面中如何用select标签实现级联_JSP编程

做查询页面,查询条件比较多的时候往往会涉及到级联.举个简单的例子,拿教务系统来说,我们要查询教学计划信息,查询条件是入学批次.学生层次(专升本.高升专).专业.课程. 它们之间有什么级联关系呢?入学批次影响学生层次(某个入学批次可能只有专升本或者高升专一个学生层次).专业.课程,学生层次影响专业.课程,专业又影响课程.也就是说当选择入学批次时,学生层次.专业和课程的下拉框会局部刷新,选择学生层次时,专业和课程的下拉框会局部刷新,选择专业时,课程的下拉框也会局部刷新. 我们当然不希望已经选择的操作

关于jsp页面中修改删除数据问题

问题描述 根据一个条件在一个页面中查询出n条数据,每条记录后面都跟着修改和删除按钮,如何点击修改或者删除按钮,就直接链接到修改这条数据的页面或者删除选中数据?尽量使用页面代码的方法,尽量不要使用JavaBean实现.主要是如何定位的问题? 解决方案 解决方案二:你可以先查询出来显示在页面上,依次循环,然后在每条数据后面跟上方法删除可以用一张页面专门处理删掉,可以用动态删除,也可以做到无刷新删除这个就要看你自己想怎么实现了查看的话,可以把ID传过去,查询,显示,如何定位,表单是最简单的解决方案三:

JSP页面中超链接传递中文参数出现乱码问题解决方法_JSP编程

本文实例讲述了JSP页面中超链接传递中文参数出现乱码问题解决方法.分享给大家供大家参考,具体如下: 这里分析超链接传递中文参数,在接受页面中出现乱码问题的解决方法. 解决方法: 在接受页面里可以如下处理, 复制代码 代码如下: <%=new String(request.getParameter("变量名字").getBytes("ISO-8859-1")) %> 注意这里用的是 new String() 创建一个新的字符串 例题: 页面一: <h

在JSP页面中的应用JavaBean

JavaBean 是一种基于 Java 的软件组件.JSP 对于在 Web 应用中集成 JavaBean 组件提供了完善的支持.这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为 JSP 应用带来了更多的可伸缩性. JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等.如果我们有三个 JavaBean ,它们分别具有显示新闻.股票价格.天气情况的功能,则创建包含所有这三种功能的 Web 页面只需要实例化这三个 Bean ,使用

使用技巧:在JSP页面中的应用JavaBean

js|技巧|页面 JavaBean 是一种基于 Java 的软件组件.JSP 对于在 Web 应用中集成 JavaBean 组件提供了完善的支持.这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为 JSP 应用带来了更多的可伸缩性. JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等.如果我们有三个 JavaBean ,它们分别具有显示新闻.股票价格.天气情况的功能,则创建包含所有这三种功能的 Web 页面只需要实例化这三个

JSP页面中的自定义标签

js|页面 JSP页面中的自定义标签 JSP页面中的自定义标签 Stephanie Bodoff 用于调用Javaean组件中的操作和执行请求分派的标准JSP标签简化了JSP页面的开发和维护.JSP技术还提供了在自定义标签中封装其他动态功能的机制,这种自定标签是JSP语言的扩展.自定义标签通常是以标签库的形式出现的,它定义了一组相关的自定义标签,并包含实现这些标签的对象. 可以由自定义标签执行的任务包括对隐式对象的操作.处理表单.访问数据库和其他企业级服务,如电子邮件和目录.以及执行流程控制.J

JSP页面中的自定义标签2

js|页面 JSP页面中的自定义标签2 带属性的标签 在标签handler中定义属性对于每一个标签属性,都必须在标签handler中定义一个属性以及符合JavaBean结构规范的get和set方法.例如,logic:present标签的标签handler <logic:present parameter="Clear"> 包含下列声明和方法: protected String parameter = null;public String getParameter() { r