程序员人生 网站导航

java中文乱码解决之道(七)-----JSP页面编码过程

栏目:php教程时间:2015-02-02 08:45:50

我们知道JSP页面是需要转换为servlet的,在转换进程中肯定是要进行编码的。在JSP转换为servlet进程中下面1段代码起到相当重要的作用。

<%@ page language="java" contentType="text/html; charset=UTF⑻" pageEncoding="GBK" %>

在上面代码中有两个地方存在编码:pageEncoding、contentType的charset。其中pageEncoding是jsp文件本身的编码,而contentType的charset是指服务器发送给客户端时的内容编码。

在前面1篇博客中就提到过(java中文乱码解决之道(4)-----java编码转换进程)jsp在转换为Servlet的进程中是需要经过主要的3次编码转换进程(除去数据库编码转换、页面参数输入编码转换):

第1次:转换为.java文件;

第2次:转换为.class文件;

第3次:业务逻辑处理后输出。

第1阶段

JVM将JSP编译为.jsp文件。在这个进程中pageEncoding就起到作用了,JVM首先会获得pageEncoding的值,如果该值存在则采取它设定的编码来编译,否则则采取file.encoding编码来编译。

第2阶段

JVM将.java文件转换为.class文件。在这个进程就与任何编码的设置都没有关系了,不管JSP采取了甚么样的编码格式都将无效。经过这个阶段后.jsp文件就转换成了统1的Unicode格式的.class文件了。

第3阶段

后台经过业务逻辑处理后将产生的结果输出到客户端。在这个进程中contentType的charset就发挥了功效。如果设置了charset则阅读器就会使用指定的编码格式进行解码,否则采取默许的ISO⑻859⑴编码格式进行解码处理。

流程如以下:

201501150001


-----原文出自:http://cmsblogs.com/?p=1518,请尊重作者辛苦劳动成果,转载说明出处.

-----个人站点:http://cmsblogs.com

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐