`
wangyanlong0107
  • 浏览: 480506 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】有关保存文件时的编码选项与html/jsp页面设定字符编码的配置

 
阅读更多

分两种情况介绍 
注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏览器发出请求--》服务器接收并处理请求--》将html形式的页面返回(响应)给浏览器,一次 请求/响应 完毕! 

静态页面(html): 

                          保存文件时的编码选项(默认为ANSI,中文操作系统ANSI即为GBK)必须得与html页面中的content-Type(即在meta标签中配置的 http-equiv="content-Type")中的配置的码一致,访问此页面时才不会出现乱码。(若不显示定义meta标签,则默认是meta标 签中给出的是系统ANSI编码,中文操作系统是GBK)

Java代码
  1. <meta http-equiv="content-Type" content="text/html;charset=字符编码">  
[java] view plaincopy
  1. <meta http-equiv="content-Type" content="text/html;charset=字符编码">  



                          原因:web服务器接收到静态请求后(如对html页面的请求),web服务器仅仅是从目录结构中搜索到它,并将它以流的形式返回,而它的编码类型在保存 文件时已经确定了,而上面的meta标签就是告诉浏览器以何种字符编码去解码,所以保存文件时的编码选项必须得与html页面中的content- Type中的配置的字符编码一致。 


动态页面(jsp): 

                          保存文件时的编码选项必须与jsp页面中的pageEncoding属性中配置的编码一致(或者在没有pageEncoding属性时与 contenType属性中配置的编码一致,两者的优先级是:pageEncoding(保存文件的编码,一般也程序读入文件的编码方式)>contentType(http报头的编码方式response.setcontentencoding();)),才不会出现乱码。

Java代码
  1. <%@page contentType="text/html;charset=字符编码" pageEncoding="字符编码"%>  
[java] view plaincopy
  1. <%@page contentType="text/html;charset=字符编码" pageEncoding="字符编码"%>  



                          原因:web容器会根据pageEncoding中的编码将jsp页面转换成servlet文件(若没有pageEncoding属性,则使用 contentType中的编码将jsp文件编译成servlet),其原理也就是以流的形式读jsp文件,所以保存jsp文件时的编码选项必须与 pageEncoding属性中配置的字符编码一致(或者在没有pageEncoding属性时与contenType属性中配置的编码一致)。而在 servlet中生成html文件时使用的是contentType中配置的编码将html页面以流的形式输出(若没有设置contentType中的 charset则使用的是pageEncoding,此时,与之前不同,它们的优先级是contentType>pageEncoding),浏览 器也会以contentType中的编码(或pageEncoding)来解码(之所以这么说是因为浏览器根据响应头来解码,而他们恰恰改变的是响应 头)。所以contentType中的编码可以与jsp文件保存时的编码选项不同(因为在有pageEncoding属性的情况下,他们之间没有直接联 系,但若没有pageEncoding属性则另当别论,原因上面已经说过)!

 

分享到:
评论

相关推荐

    DWR.xml配置文件说明书(含源码)

    DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    网管教程 从入门到精通软件篇.txt

    ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASF:Microsoft高级流媒体格式文件 ASM:汇编语言...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a &#124;&#124; $b :或 $a or $b :或 $a &&...

    java基础题 很全面

    16. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 22 17. 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld....

Global site tag (gtag.js) - Google Analytics