`

encoding编码问题之二Jsp文件

阅读更多
5.jsp文件的编辑,上传,编译成servlet,网络传输发生了什么呢?

【编辑】jsp文件windows操作开发保存时默认是按照GBK编码字符串的,可以指定保存成UTF-8等其它格式。假设以UTF-8格式保存
编辑动作:GBK录入->unicode->UTF-8保存jsp文件

【上传】此时UTF-8码保存的jsp文件被转换成了UNIX系统下的iso-8859-1编码        
上传动作:UTF-8保存jsp文件->unicode->iso-8859-1保存jsp文件==========(有待考究,也许没有文件编码的转换)

【编译】[tomcat举例]jvm读出iso-8859-1保存jsp文件进入内存,不作任何格式的修改,交给jasper告诉它我读出好了而且文件编码格式iso-8859-1,jasper会根据指定的pageEncoding属性来决定响应内容的编码格式,当没有设置此属性时,翻译之后的_jsp.java文件为response.setContentType("text/html"),内容的编码jasper采取了默HTTP协议的传输编码格式iso-8859-1,所以我们在GBK屏显环境下看到的是乱码,(因为iso-8859-1直接高位补0进入内存处理区,结果导致两个汉字会看到四个iso-8859-1字符,gbk包含latin-1字符点阵,而进行输出缓冲待传输时又进行了简单的去高位0操作,准备传输的是默认的latin-1编码字节流)那为什么客户端反而可以看到正常的中文字符呢?

编译动作:iso-8859-1保存jsp文件->unicode->网卡出缓冲码流(取决于pageEncoding)如果则没有默认latin1
如:"眼泪"D1BBC0E1默认iso-8859-1字节四个->unicode补高位0x00D10,x00BB,0x00C0,0x00E1我们看到的乱码   ->iso-8859-1字节缓冲输出又还原到D1BBC0E1

【网络传输】经过上面的示例之后,IE端得到iso-8859-1码因为没捕获到HTTP响应头"Content-Type"也没有捕获到<meta>属性,得到的D1BBC0E1字节流会按照IE自身支持的字符集(系统Locale)来加以显示,所以反而会两两字节重组后得到正确的"眼泪"二字

IE端解释动作:iso-8859-1网卡出缓冲编码字节流->unicode->屏显GBK码

==============================================
==============================================      
总体发生动作:
编辑动作:GBK录入->unicode->UTF-8保存jsp文件================================1
上传动作:UTF-8保存jsp文件->unicode->iso-8859-1保存jsp文件==================2(上传换码否?)
编译动作:iso-8859-1保存jsp文件->unicode->iso-8859-1默认/pageEncoding属性===3
传输动作:iso-8859-1默认/pageEncoding属性->unicode->屏显GBK码===============4
    
观察后不难发现:
1,2环节不会有任何错误;3,4环节也不会有任何错误.
2环节后半部分、3环节上半部分是否发生文件上传转码并无影响,
     因为->unicode->iso-8859-1码保存jsp文件==2
         iso-8859-1码保存jsp文件->unicode==3 构成闭环,在这里不会发生任何错误。

关键点:在jasper处理2,3环节的地方,文件是以utf-8保存的,可如果没有pageEncoding='utf-8'的指定,就会导致输出码流不再是保存时的utf-8码流传给了IE端,IE端就会按照这个错误的pageEncoding属性指定的编码进行解码重组,而出现错误。
        
点评:
编译动作是个关键点:它在取出jsp源文件的时候,一定要和jsp源文件保存时的编码一致,否则就会出错误.
这一点由pageEncoding="文件保存码"="Eclipse开发工具workspace工作区编码"来保证的。

jsp静态汉字显示关键点就是:
1。pageEncoding=""只要设置,一定要和保存jsp文件时编码一致。
2。pageEncoding=""没有设置,注意<meta>属性,要和保存jsp文件时编码一致。
3。如果既没有pageEncoding="",也没有<meta>属性, 那么是默认的iso-8859-1对于Tomcat进行jasper编译的时候来说。而对于webSphere来说,一定会默认的在jsp或者servlet传输时默认指定content-type头部为iso-8859-1,所以这里的页面<meta>不在有任何的效果

以上分析了jsp页面中不读取动态字符串,静态字符串的展示原理,那么针对访问数据库数据文件的动态字符串的生成又是什么样子呢?这个可以参考上方的【数据库数据文件读取:】来理解。只是需要注意,从数据库取出的动态字符串必需和jsp文件保存时[既是pageEncoding=""]的编码一致,
如:pageEncoding="utf-8",那么new String(rs.getString().getBytes("iso-8859-1"),"utf-8");

jsp总结:
pageEncoding属性告之IE浏览器什么编码方式保存的静态字符串,IE好根据此来逆向解释往->unicode内存码转换
pageEncoding = "jsp文件保存码" = "Eclipse开发环境workspace工作区编码"
new String(rs.getString().getBytes("数据文件码"),"jsp文件保存码");
tomcat服务器在jasper解释开始解释jsp源文件的时候,是根据pageEncoding属性指定的码集进行网卡缓冲待输出字节流.如果未指定,则按照默认的iso-8859-1码流输出
分享到:
评论

相关推荐

    jsp编码 jsp乱码

    jsp编码乱码问题是jsp开发中常见的问题之一,该问题可能会导致jsp页面显示乱码,影响用户体验。因此,了解jsp编码的原理和解决乱码问题的方法是非常重要的。 jsp编码的原理 jsp编码是指jsp页面中的编码方式,jsp...

    jsp中文乱码问题jsp中文乱码问题详解

    jsp中文乱码问题的出现是由于编码格式不一致所导致的,可以通过确保jsp文件的存储格式、解码格式和控制浏览器的解码方式一致来解决乱码问题。同时,在使用Post和Get方式提交表单时,需要指定提交的编码格式,以避免...

    jsp中文显示问号问题解决方法.docx

    解决JSP 中文显示问号问题的方法有两种:一种是在 Eclipse 中设置 Encoding 选项,另一种是修改 JSP 文件的编码方式。 方法一:在 Eclipse 中设置 Encoding 选项 在 Eclipse 中,可以通过设置 Encoding 选项来解决 ...

    web项目乱码问题 jsp乱码问题解决

    乱码通常由于字符编码不一致导致,尤其是在JSP文件中,不同的编码设置可能会引发问题。例如,JSP文件本身的编码、HTTP响应的Content-Type头以及浏览器解析页面时使用的编码,这三个环节必须保持一致,否则就可能出现...

    jsp文件上传,解决中文乱码

    综上所述,解决`JSP文件上传`时的中文乱码问题涉及多个层面,包括客户端、服务器配置、编码过滤器、第三方库以及文件保存过程中的编码处理。确保每个环节都正确处理字符编码是避免乱码的关键。对于具体的问题,可能...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    通常在JSP文件的顶部添加以下行来指定页面编码: ```jsp ;charset=UTF-8" language="java" %&gt; ``` 这将确保JSP页面在被解释和渲染时使用UTF-8编码。 除了上述基本的过滤器解决方案,还可以根据实际项目需求进行更...

    jsp eclipse乱码问题

    解决JSP页面在Eclipse中的乱码问题,关键是确保所有涉及的地方(包括JSP页面、IDE、服务器以及客户端)都使用相同的编码标准。通过上述步骤的操作,可以有效地避免乱码问题的发生,提升Web应用的质量和用户体验。

    JSP中文乱码问题解决办法

    总的来说,解决JSP中文乱码问题的关键在于理解字符编码的工作原理,以及在各个层面上(浏览器、服务器、数据库)如何设置和转换编码。通过正确设置和处理,可以确保中文字符在Web应用中的正确显示和处理。

    jsp文件上传包.zip

    总的来说,"jsp文件上传包.zip"是一个实用的工具,它简化了JSP中文件上传并解决中文乱码问题的过程,使得开发者能够更专注于业务逻辑,而不是基础的编码问题。在实际项目中,合理利用这类工具可以提高开发效率,同时...

    JSP中文乱码处理JSP中文乱码处理

    总结来说,解决JSP中文乱码问题的关键在于:明确JSP文件的编码,正确设置HTTP请求的解码,以及统一响应内容和数据库的字符集。同时,要注意在每个可能产生编码转换的环节都要进行适当的检查和配置,以确保数据的完整...

    Jsp页面中的字符编码方式与乱码解决方法

    下面我们将详细介绍 JSP 中的字符编码方式,并提供解决乱码问题的方法。 1. pageEncoding="UTF-8" pageEncoding 是 JSP 中的一个指令,它指定了 JSP 文件在编译成 Servlet 时所使用的编码方式。通常,在 JSP 文件...

    解决JSP中文乱码问题

    然而,当Java或JSP文件包含中文字符时,由于文件本身的编码方式和Java编译器或Web服务器所使用的编码不一致,就可能导致乱码。乱码问题主要分为两类:一是Java或JSP源文件在编译过程中产生的乱码,二是Java程序与...

    JSP编码以及乱码问题解疑

    **JSP编码与乱码问题详解** 在JSP(JavaServer Pages)开发中,编码问题是一个常见的困扰,尤其是在处理中文字符时。本文将深入探讨JSP编程过程中出现的乱码问题,包括原因分析和解决方案。 1. **基本的乱码问题**...

    Struts2资源文件在jsp页面中显示乱码解决

    该插件不仅能解决properties文件在编辑器中的乱码问题,还能确保JSP页面正确显示资源文件中的内容,而无需手动编码转换。 安装步骤如下: 1. 在Eclipse中,依次选择`Help` &gt; `Software Updates` &gt; `Find and ...

    jsp页面传值中文乱码问题处理.docx

    jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这...JSP 页面传值中文乱码问题可以通过修改编码方式、设置输出编码、接收参数编码、Get 提交编码和数据库连接参数编码等方式来解决。

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,字符编码问题是一个经常遇到的技术难题。如果处理不当,很容易导致网页显示乱码,影响用户体验及数据的正确性。本文将详细介绍如何有效地解决JSP中的...

    JSP中文乱码问题分析及处理方法

    JSP中文乱码问题主要是由字符编码不一致引起的,通过在JSP文件中明确指定编码格式或在服务器层面配置统一的编码标准,可以有效地解决这一问题。在实际开发中,应根据项目的规模和需求选择合适的解决方案,确保中文...

    解决jsp页面中文乱码问题

    - 在JSP文件顶部添加`;charset=UTF-8" language="java" %&gt;`指令,指定页面的MIME类型为text/html,字符集为UTF-8。 - 确保IDE(如Eclipse、IntelliJ IDEA)中项目的字符编码设置为UTF-8,避免在保存文件时使用错误...

    jspsmart上传下载文件实例中文

    这个实例中包含了JSpsmart的源码,帮助开发者深入理解其工作原理并解决文件上传过程中的编码问题。 ### 一、JSpsmart核心功能 1. **大文件上传支持**:JSpsmart允许上传大文件,并且可以设定上传时的内存阈值,...

    jsp页面提交乱码问题

    ### jsp页面提交乱码问题解析 #### 一、乱码问题概述 在进行Web开发时,特别是使用Java Server Pages (JSP)技术时,经常会遇到表单提交数据...此外,合理配置应用程序的整体字符编码也是避免乱码问题的有效途径之一。

Global site tag (gtag.js) - Google Analytics