JSP中pageEncoding和charset区别,中文乱码解决方案详解编程语言
JSP指令标签中 %@ page contentType= text/html;charset=GB2312 % 这句有什么用途?
关于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 %
这样就服务器一定会是正确抓到“你好”了。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13685.html
cjava相关文章
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)详解编程语言
- JSP JavaBean的使用
- JSP EL表达式常用隐含对象详解
- JSP jsp:getProperty:数据获取标签
- JSP Out.clear()方法:清除缓冲区中的数据
- JSP搭建MySQL数据库连接测试(jsp测试连接mysql)
- 形如:Linux一键安装JSP:快速搭建轻量级Web应用(linux一键安装jsp)
- 使用JSP连接MySQL数据库(jsp连接池mysql)
- 轻松搞定:Linux环境下JSP环境配置(linux配置jsp)
- Connecting JSP to MySQL: A StepbyStep Guide for Your Web Development Project(jsp连接mysql代码)
- 利用JSP及Oracle搭建文件管理系统(jsp oracle文件)
- JSP与Oracle数据库实战指南(jsp oracle实战)
- JSP取得在WEB.XML中定义的参数
- jsp留言板源代码二:给jsp初学者.
- JSP/Servlet应用程序优化八法
- JSP获取真实IP地址的代码
- javascript通过url向jsp页面传递中文参数导致乱码解决方案
- jqueryajax提交表单从action传值到jsp实现小结
- jsp自定义标签技术(实现原理与代码以及平台搭建步骤)
- JSP自定义标签获取用户IP地址的方法
- JSP+MySQL中文乱码问题post提交乱码解决方案
- JSP中js传递和解析URL参数以及中文转码和解码问题
- jsp使用cookie存储中文示例分享
- jsp与sql语句的混合使用示例
- jsp之间传参数接受中文有乱码问题解决方法