关于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)。

      在Tomcat中如果在jsp中设定了pageEncoding,则contentType也跟着设定成相同的编码了,但是在resion中就不是,resin中还会用默认的,这点通过查看编译后的类servlet java文件就可以看到这一点,而问题恰恰就出在这里,所以,在jsp中,如果是在resin下最好还是明确的单独设定这2个属性。

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"%>

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

转载于:https://www.cnblogs.com/kszit/p/3665685.html

为何jsp 在resin下乱码,但在tomcat下却工作良好的问题相关推荐

  1. 决策分析平台(RBP)在tomcat下的部署

    润乾决策分析平台(简称RBP)是面向企业级应用的决策分析解决方案,对于机构内部并行多种业务系统的情况,润乾RBP可以彻底解决业务数据不能并行使用的问题.它抽取位于不同类型不同应用的数据库中的数据,通过 ...

  2. 全面讲解Tomcat下SSL证书的配置(五)

    Tomcat下具体的配置 Tomcat下关于使用SSL证书的配置可以分为三部分 1.启用SSL,使用Tomcat Java平台自身的SSL功能: 2.启用SSL,通过apr协议调用openssl的SS ...

  3. linux resin mysql_【转】Linux下Resin+JSP+MySQL的安装和配置

    准备软件: 1. J2SDK(1.5.0): jdk-1_5_0-linux-i586-rpm.bin 2. Apache(2.0.53): httpd-2.0.53.tar.gz 3. Resin( ...

  4. tomcat 下jsp乱码的原因分析

    tomcat 下jsp乱码 我们先看一个例子(包含2个文件一个test.jsp , 和result.jsp): test.jsp <%@ page language="java&quo ...

  5. weblogic容器通过JSP页面输出图片出现乱码Tomcat下却正常

    这几天一直被一个问题搞得头晕脑胀,本人项目里要实现这样一个功能,在报表里显示一个三维向量图(其实没那么神乎),于是需要写一个jsp页面来输出图片. 本来已经在tomcat下调试成功了的,但是到了现场调 ...

  6. JSP中文页面显示乱码

    一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大 ...

  7. JSP怎么解决中文乱码问题

    一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大 ...

  8. jsp中解决中文乱码问题(基础问题)

    在两个jsp简单页面编写中,出现了一个问题,出现了中文乱码, 本应该出现的中文显示不出来,分析如下:java编程之所以会出现说出现中文乱码是 因为:Java的内核和class文件是基于unicode的 ...

  9. linux 在文本模式下(命令模式)下,中文是乱码,如何解决?

    linux 在文本模式下(命令模式)下,中文是乱码,如何解决? 转载于:https://blog.51cto.com/renxi/449690

  10. MySQL数据库乱码 - Linux下乱码问题解决

    前言 乱码问题是很让人抓狂的问题,下面我将记录一下Linux下MySQL乱码问题的解决方法. mysql在linux下乱码问题 一.操作 mysql默认字符集是latin1,但是我们大部分程序使用的字 ...

最新文章

  1. php的htaccess,.htaccess
  2. 利用人类神经网络进行蛋白质设计
  3. ASP.NET Core MVC 源码学习:详解 Action 的匹配
  4. 重启redis命令_redis系列之——数据持久化(RDB和AOF)
  5. 一个计算机硕士毕业生的求职经验(二)
  6. delegate、notification、KVO各优缺点
  7. OpenPilot 0.3.2 发布,开源自动驾驶技术
  8. 从零基础入门Tensorflow2.0 ----四、12. tf_data基础api使用
  9. paip.提升效率---------文件搜索工具总结
  10. 云服务器和虚拟主机的区别
  11. 【计算机网络】零拷贝之MMAP
  12. 25匹马,5个跑道,不用外界工具怎样选出最快的5匹,要次数最短
  13. _getch()函数的一些使用方法
  14. 入IC行业,需不需要找培训机构
  15. 系统结构设计原则、聚合与耦合
  16. Matlab GUI编程技巧(十五):scroll滚动到组件内的位置及ScrollBar动画演示
  17. 测试开发实习日记(DAY1)
  18. Listary Pro- 文件浏览与搜索增强的超级神器
  19. SpringCloud历史版本官网查询方法
  20. 腾讯垄断数据,滥用市场支配地位了吗?

热门文章

  1. 《数据驱动安全:数据安全分析、可视化和仪表盘》一2.3 数据帧介绍
  2. CentOS6.4_X86_64 安装Drupal-7.31必须成功版!
  3. MySQL编程(0) - Mysql中文乱码问题解决方案
  4. Red Hat Linux 5.2 14T大文件系统 分区过程
  5. access与Oracle互导
  6. vue vue-cli3 修改elementui的date-picker源码 引入node_modules里的element-ui后报错exports is not defined...
  7. pyinstaller 打包selenium脚本 取消cmd
  8. 试水区块链出版?纽约时报在招人了
  9. CentOS下用yum命令安装jdk
  10. [发布]Lucene索引分析工具Luke.Net 0.5升级版 (兼容Lucene.Net 2.9.4.1)