Apache的Charset设置
来源:互联网 发布:nga 删淘宝 编辑:程序博客网 时间:2024/06/10 10:56
· 作者:laruence(http://www.laruence.com/)
· 本文地址: http://www.laruence.com/2008/04/16/118.html
· 转载请注明出处
这个问题已经遇到过俩次了,就是页面中明确指明了编码是UTF8,但是显示是乱码。
虽然知道解决方法,也知道是Apache的原因,但是一直没有去找其所以然,今天趁机,就研究了一下。1.页面没有指定charset , Apache配置defaultcharst gbk , 页面文件编码是utf-8
结果: 乱码,使用wireshark抓包,发现服务器返回的header中指明了:
Content-Type: text/html; charset=GBK
结论:当页面没有指明charset的时候,Apache的defaultcharset起作用2. 页面指定charset为utf-8, Apache配置defaultcharset gbk. 页面文件是utf-8
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="page-header">
测试Apache DefaultCharset
</div>
</body>
</html>
结果还是出现乱码。<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="page-header">
测试Apache DefaultCharset
</div>
</body>
</html>
结论:当Apache配置了DefaultCharset, 将忽略页面的charset申明。
3 PHP header申明charset为utf8, Apache配置defaultcharst gbk,页面文件编码是utf8
header("Content-Type:text/html; charset=utf-8");
结果 : 页面显示正常。4 Apache设置DefaultCharset off
结果,页面显示正常。
翻阅了下Apache2的手册:
AddDefaultCharset 指令
说明 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集
语法 AddDefaultCharset On|Off|charset
默认值 AddDefaultCharset Off
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状态 核心(C)
模块 core
当且仅当应答内容是text/plain或text/html时,此指令将会在HTTP应答头中加入的默认字符集。理论上这将覆盖在文档体中通过<meta>标签指定的字符集,但是实际的行为通常取决于用户浏览器的设置。AddDefaultCharset Off 将会禁用此功能。AddDefaultCharset On 将启用Apache内部的默认字符集iso-8859-1 。您也可以指定使用在IANA注册过的字符集名字中的另外一个charset 。比如说:
AddDefaultCharset utf-8
说明 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集
语法 AddDefaultCharset On|Off|charset
默认值 AddDefaultCharset Off
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状态 核心(C)
模块 core
当且仅当应答内容是text/plain或text/html时,此指令将会在HTTP应答头中加入的默认字符集。理论上这将覆盖在文档体中通过<meta>标签指定的字符集,但是实际的行为通常取决于用户浏览器的设置。AddDefaultCharset Off 将会禁用此功能。AddDefaultCharset On 将启用Apache内部的默认字符集iso-8859-1 。您也可以指定使用在IANA注册过的字符集名字中的另外一个charset 。比如说:
AddDefaultCharset utf-8
也就是说,当Apache不指定defaultcharset的时候,页面编码由页面自己的meta标签指定。
当Apache指定的时候,将忽略页面中的meta标签指定的编码. 但是容许脚本直接header编码方式给客户端
最后,还有一个问题没有得出结果:
当Apache和页面都没有指定的时候, 又如何?
我在自己的机器上,如果都不指定, 默认还是utf8
- Apache的Charset设置
- Apache的Charset设置
- Apache的Charset设置
- MySql: charset 和 collation的设置
- MySql:charset和collation的设置
- android 动态设置读取文件的编码格式(charset)
- android 动态设置读取文件的编码格式(charset)
- java开发中的pageEncoding与charset的设置编码问题
- meta charset 与 response header 的charset
- Java Charset的使用
- Apache服务器的设置
- Apache的基本设置
- apache的认证设置
- Apache的配置文件设置
- 【php】apache的设置
- charset
- charset
- charset
- 黑马程序员_Java学习日记第一天-Java基础
- dos百分号
- Windows phone 应用开发-数据缓存
- 批量离线下载迅雷快传资源
- Xcode中创建Target的步骤
- Apache的Charset设置
- c++中CMainframe和CView类的区别?C++工程中的主入口点在哪里?
- 测试apns provider feedback 遇到的问题
- C#中使用MySQLDriverCS连接调用MySQL
- Spring in action Third
- VC常用小知识
- Go语言_HTTP包
- Maven 一般用户配置
- 古希腊神话故事4 :伊娥