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

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

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

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

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

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

第一阶段

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

第二阶段

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

第三阶段

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

流程如如下:

Java中文jsp页面_java中文乱码解决之道(七)—–JSP页面编码过程相关推荐

  1. [转]java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码

    http://www.cnblogs.com/chenssy/ java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码 随着计算机的发展.普及,世界各国为了适应本国的语言 ...

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

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. 在上面代码中有两个地方存在编码:pageEncodi ...

  3. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  4. java中文乱码解决之道(八)-----解决URL中文乱码问题

    来源:http://www.cnblogs.com/chenssy/p/4237953.html 我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要 ...

  5. java url utf 8_java中文乱码解决之道(八)—–解决URL中文乱码问题

    我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不 ...

  6. java中文乱码解决之道(五)—–java是如何编码解码的

    编码&解码 1:I/O操作 2:内存 3:数据库 4:javaWeb 下面主要介绍前面两种场景,数据库部分只要设置正确编码格式就不会有什么问题,javaWeb场景过多需要了解URL.get.P ...

  7. VC6里面的中文名字或者注释复制乱码解决

    只要你把输入法换成中文的输入法如搜狗,复制的编辑器输入法也调整为中文的,就会解决乱码复制问题,不知道原因,肯定是编码问题,不想深究.解决问题而已 转载于:https://www.cnblogs.com ...

  8. java pinyin4j 官网_Java中文转汉语拼音类库pinyin4j使用示例

    pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字) pinyin4j官方网址:http://pinyin4j.sourceforge.net/ import java.util. ...

  9. java之跳转_java学习之五种跳转关于jsp的

    现在介绍一下五种关于jsp的跳转. 1.RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Se ...

最新文章

  1. 《Android App开发入门:使用Android Studio 2.X开发环境》——1-3 Android Studio 快速上手...
  2. [LeetCode]Gray Code
  3. SAP中创建分部机构凭证号码并且按年度编号
  4. VS2008非托管c++访问webservice服务(以WeatherWS 天气服务 为例)
  5. 转:ORACLE的JDBC连接方式:OCI和THIN
  6. IE和Firefox对iframe document对象的差异性
  7. php 错误500排错,如何排查Web服务器HTTP ERROR 500的错误?
  8. 【caffe-windows】 caffe-master 之图片转换成lmdb or leveldb
  9. 计算机存储系统中,有哪些措施可以提高 CPU 访问存储系统的速度?
  10. 封装自己的DB类(PHP)
  11. C语言符号优先级——(“++”符号的的坑)
  12. 嵌入式开发 | 单片机产品开发流程及学习方法
  13. 什么是php-fpm
  14. view的superview的变换
  15. Tilemap瓦片地图
  16. 使用计算机打印资料时需要安装打印机驱动,详细教您如何在计算机上安装打印机驱动程序...
  17. 云场景实践研究第40期:网聚宝
  18. 解决Android 模拟机开机黑屏问题、npm内存溢出问题
  19. 最长公共子序列_使用序列化查找对象中的脏字段
  20. python十六进制排序_python十六进制

热门文章

  1. VC++6.0中使用GDI+绘图(转载)
  2. Eclipse 真机调试检测不到手机解决方案
  3. 【白皮书分享】2020年未来智慧园区白皮书-华为.pdf(附下载链接)
  4. 【报告分享】中国人工智能产业发展指数.pdf
  5. Resource punkt not found
  6. 倒计时6天|2020腾讯广告犀牛鸟计划申请即将截止,错过再等一年!
  7. 海外仓ERP系统功能怎么样?
  8. Star Schema完全参考手册学习笔记九
  9. 面试准备每日五题:C++(八)——重写重载隐藏、vector相关
  10. 加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)