为何jsp 在resin下乱码,但在tomcat下却工作良好的问题
关于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下却工作良好的问题相关推荐
- 决策分析平台(RBP)在tomcat下的部署
润乾决策分析平台(简称RBP)是面向企业级应用的决策分析解决方案,对于机构内部并行多种业务系统的情况,润乾RBP可以彻底解决业务数据不能并行使用的问题.它抽取位于不同类型不同应用的数据库中的数据,通过 ...
- 全面讲解Tomcat下SSL证书的配置(五)
Tomcat下具体的配置 Tomcat下关于使用SSL证书的配置可以分为三部分 1.启用SSL,使用Tomcat Java平台自身的SSL功能: 2.启用SSL,通过apr协议调用openssl的SS ...
- 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( ...
- tomcat 下jsp乱码的原因分析
tomcat 下jsp乱码 我们先看一个例子(包含2个文件一个test.jsp , 和result.jsp): test.jsp <%@ page language="java&quo ...
- weblogic容器通过JSP页面输出图片出现乱码Tomcat下却正常
这几天一直被一个问题搞得头晕脑胀,本人项目里要实现这样一个功能,在报表里显示一个三维向量图(其实没那么神乎),于是需要写一个jsp页面来输出图片. 本来已经在tomcat下调试成功了的,但是到了现场调 ...
- JSP中文页面显示乱码
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大 ...
- JSP怎么解决中文乱码问题
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大 ...
- jsp中解决中文乱码问题(基础问题)
在两个jsp简单页面编写中,出现了一个问题,出现了中文乱码, 本应该出现的中文显示不出来,分析如下:java编程之所以会出现说出现中文乱码是 因为:Java的内核和class文件是基于unicode的 ...
- linux 在文本模式下(命令模式)下,中文是乱码,如何解决?
linux 在文本模式下(命令模式)下,中文是乱码,如何解决? 转载于:https://blog.51cto.com/renxi/449690
- MySQL数据库乱码 - Linux下乱码问题解决
前言 乱码问题是很让人抓狂的问题,下面我将记录一下Linux下MySQL乱码问题的解决方法. mysql在linux下乱码问题 一.操作 mysql默认字符集是latin1,但是我们大部分程序使用的字 ...
最新文章
- php的htaccess,.htaccess
- 利用人类神经网络进行蛋白质设计
- ASP.NET Core MVC 源码学习:详解 Action 的匹配
- 重启redis命令_redis系列之——数据持久化(RDB和AOF)
- 一个计算机硕士毕业生的求职经验(二)
- delegate、notification、KVO各优缺点
- OpenPilot 0.3.2 发布,开源自动驾驶技术
- 从零基础入门Tensorflow2.0 ----四、12. tf_data基础api使用
- paip.提升效率---------文件搜索工具总结
- 云服务器和虚拟主机的区别
- 【计算机网络】零拷贝之MMAP
- 25匹马,5个跑道,不用外界工具怎样选出最快的5匹,要次数最短
- _getch()函数的一些使用方法
- 入IC行业,需不需要找培训机构
- 系统结构设计原则、聚合与耦合
- Matlab GUI编程技巧(十五):scroll滚动到组件内的位置及ScrollBar动画演示
- 测试开发实习日记(DAY1)
- Listary Pro- 文件浏览与搜索增强的超级神器
- SpringCloud历史版本官网查询方法
- 腾讯垄断数据,滥用市场支配地位了吗?
热门文章
- 《数据驱动安全:数据安全分析、可视化和仪表盘》一2.3 数据帧介绍
- CentOS6.4_X86_64 安装Drupal-7.31必须成功版!
- MySQL编程(0) - Mysql中文乱码问题解决方案
- Red Hat Linux 5.2 14T大文件系统 分区过程
- access与Oracle互导
- vue vue-cli3 修改elementui的date-picker源码 引入node_modules里的element-ui后报错exports is not defined...
- pyinstaller 打包selenium脚本 取消cmd
- 试水区块链出版?纽约时报在招人了
- CentOS下用yum命令安装jdk
- [发布]Lucene索引分析工具Luke.Net 0.5升级版 (兼容Lucene.Net 2.9.4.1)