有关保存文件时的编码选项与html/jsp页面设定字符编码的配置
2012-10-22 11:08
141 查看
原文地址:/article/4005332.html
分两种情况介绍
注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏览器发出请求--》服务器接收并处理请求--》将html形式的页面返回(响应)给浏览器,一次 请求/响应 完毕!
静态页面(html):
保存文件时的编码选项(默认为ANSI,中文操作系统ANSI即为GBK)必须得与html页面中的content-Type(即在meta标签中配置的http-equiv="content-Type")中的配置的码一致,访问此页面时才不会出现乱码。(若不显示定义meta标签,则默认是meta标签中给出的是系统ANSI编码,中文操作系统是GBK)
Java代码
<meta http-equiv="content-Type" content="text/html;charset=字符编码">
原因:web服务器接收到静态请求后(如对html页面的请求),web服务器仅仅是从目录结构中搜索到它,并将它以流的形式返回,而它的编码类型在保存文件时已经确定了,而上面的meta标签就是告诉浏览器以何种字符编码去解码,所以保存文件时的编码选项必须得与html页面中的content-
Type中的配置的字符编码一致。
动态页面(jsp):
保存文件时的编码选项必须与jsp页面中的pageEncoding属性中配置的编码一致(或者在没有pageEncoding属性时与contenType属性中配置的编码一致,两者的优先级是:pageEncoding>contentType),才不会出现乱码。
Java代码
<%@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属性则另当别论,原因上面已经说过)!
分两种情况介绍
注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏览器发出请求--》服务器接收并处理请求--》将html形式的页面返回(响应)给浏览器,一次 请求/响应 完毕!
静态页面(html):
保存文件时的编码选项(默认为ANSI,中文操作系统ANSI即为GBK)必须得与html页面中的content-Type(即在meta标签中配置的http-equiv="content-Type")中的配置的码一致,访问此页面时才不会出现乱码。(若不显示定义meta标签,则默认是meta标签中给出的是系统ANSI编码,中文操作系统是GBK)
Java代码
<meta http-equiv="content-Type" content="text/html;charset=字符编码">
原因:web服务器接收到静态请求后(如对html页面的请求),web服务器仅仅是从目录结构中搜索到它,并将它以流的形式返回,而它的编码类型在保存文件时已经确定了,而上面的meta标签就是告诉浏览器以何种字符编码去解码,所以保存文件时的编码选项必须得与html页面中的content-
Type中的配置的字符编码一致。
动态页面(jsp):
保存文件时的编码选项必须与jsp页面中的pageEncoding属性中配置的编码一致(或者在没有pageEncoding属性时与contenType属性中配置的编码一致,两者的优先级是:pageEncoding>contentType),才不会出现乱码。
Java代码
<%@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属性则另当别论,原因上面已经说过)!
相关文章推荐
- 有关保存文件时的编码选项与html/jsp页面设定字符编码的配置
- 有关保存文件时的编码选项与html/jsp页面设定字符编码的配置
- 有关保存文件时的编码选项与html/jsp页面设定字符编码的配置
- 有关保存文件时的编码选项与html/jsp页面设定字符编码的配置
- HTML 文档的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览浏览器配置中呈现为乱码。页面的字符编码必须在文档或传输协议层声明。
- HTML 文档的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览器配置中呈现为乱码。页面的字符编码必须在文档或传输协议层声明。
- MyEclipse设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- JSP页面中,二处的字符编码有何区别及response 3 种设置编码的方式
- Maven Jetty 启动,修改html,jsp等文件无法保存
- 配置eclipse中jsp/html页面自动提示
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- jsp页面include静态文件html时导致的乱码问题.
- MyEclipse设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- javaweb国际化,用struts标签解决,注意每个页面都是action跳jsp,并且拦截器的配置使得每次将国际化配置保存在session
- 在jsp页面修改XML配置文件里的参数值
- Eclipse所有编码格式修改位置(项目、文件、css、sql、xml、jsp、html等)
- 编写jsp页面的时候,直接在页面里输入汉字,保存时出现编码错误
- 1j2ee即web项目,严格意义上来说,没有jsp代码,只有class文件、html文件、javascript文件。2 基于extjs框架的项目怎么怎么查看在浏览器中展示的最终html页面的代码 3
- Vim文件保存编码配置