1.关于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"%>
这样就服务器一定会是正确抓到“你好”了。
2.通常,在涉及到中文的JSP页面中,要根据不同的情形进行相应的编码变换:
要使JSP页面能正确显示中文,在JSP页面中加入:
<%@ page contentType="text/html;charset=UTF-8"%>
要使JSP页面正确接收来自上一个页面提交的含中文信息的表单,以及从数据库或是文件中正确读出中文信息,就需要将得到的字符串进行代码转换如:
String str=new String(str.getBytes("ISO-8859-1"),"UTF-8");
而当JSP向数据库或文件中写入中文字符时,就要用相反的方式转换,如:
String str=new String(str.getBytes("UTF-8"),"ISO-8859-1");
PS:这里的"UTF-8"要根据你JSP页面的charset内容而定,不可盲目照搬。
相关推荐
jsp页面向数据库中写入数据,当数据为英文时,可正常写入,当数据为中文时,就会出现乱码。
动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html...
在做J2EE时,经常需要将静态网页转换成jsp,但下载下来的htm或htm文件本身是UTF8和unicode,直接改成jsp会变成乱码,在MyEclipse中修改也不成,颇费劲。这个代码程序就是用来读取某种编码格式的html或txt文件并将它...
一个可以方便的将UTF-8编码的jsp文件自动转换成GBK编码的小工具或相反转换,可以保持目录结构不变。 使用说明在压缩包内。
说塔文件编码转换器可以将文件(如:aspx文件|*.aspx|cs文件|*.cs|asp文件|*.asp|txt文件|*.txt|css文件|*.css|js文件|*.js|jsp文件|*.jsp|php文件|*.php等)的编码格式在UTF-7、UTF-8、Unicode、ASII、Big5、GB2312...
把html页面转换为jsp页面工具java代码生成工具
假设你的同事做好了一个项目,为了更好的支持国际化,里面的jsp页面都采用UTF-8,然后发给你,你导入到Eclipse的workspace中,一般情况下,在Eclipse中,这些jsp都变成了GBK编码,你双击打开,一堆乱码。假设你知道...
让你全面了解jsp编码原来,顺利解决可能遇到的各种中文乱码问题
可以实现 txt,xml,css,htm,html,php,jsp 很好的转换。
JavaScript脚本实现的jsp网站简体繁体中文转换
jsp编码设置成utf8
jsp初学者编码题,火车票查询,包括数据库,个人做的,有不好的编码,请多多指教,谢谢!
比如图2的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。 step3. 转码 在设置了转码规的...
JSP和Servlet中的几个编码的作用及原理 JSP和Servlet中的几个编码的作用及原理
JSP用户提交页面编码,JSP用户提交页面编码
jsp页面转换成静态页面 jsp页面转换成静态页面
myeclipse(设置JSP页面编码格式)【图解很详细的】....下载下看看哦
Java源文件 .java Java字节码文件 .class 动态页面 .jsp 静态页面 .html 脚本文件 .js
JSP编码中乱码问题.doc 叫你怎么解决jsp编码中出现的各种中文乱码的解决办法