java中文乱码解决之道(七)-----JSP页面编码过程
我们知道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⑴编码格式进行解码处理。 流程如以下: -----原文出自:http://cmsblogs.com/?p=1518,请尊重作者辛苦劳动成果,转载说明出处. -----个人站点:http://cmsblogs.com (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |