Preface
在浏览本文之前,请保证已经安装好Apache HTTP Server。
Environment
OS: Windows XP
Web Server: Apache HTTP Server 2.2.4
Introduction
本文主要讲述在Apache HTTP Server上的Web Application可能遇到的乱码问题以及解决方法。
Section 1 - Problem:
如果利用Apache HTTP Server去Develop或者Deploy Web App,往往在制作中文或者其他非英文语言的Web的时候会遇到乱码问题。
Section 2 - Reason:
因为Apache HTTP Server在默认安装状态下的default charset是iso-8859-1,所以无法完整支持中文编码GBK或者UTF-8等字符的显示。
Section 3 - Solution:
例如我们现在需要Web正常显示UTF-8编码的字符,有几种方法我们可以选择:
A. 在没有配置Apache HTTP Server的default charset的情况下,页面指定charset为UTF-8。 (适合于设置个别Page)
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- </head>
- <body>
- <div id="page-header">
- 测试Apache DefaultCharset
- </div>
- </body>
- </html>
B. 在PHP header申明charset为UTF-8,是否已经配置Apache HTTP Server的default charset都不重要,因为都会被override。 (适合于设置个别Page)
- header("Content-Type:text/html; charset=utf-8");
C. 在Apache HTTP Server的httpd.conf文件中设置AddDefaultCharset (httpd.conf中没有的就添加,已有这项的就修改)。 (适合于设置个整个Website)
- AddDefaultCharset utf-8
C这方法可能会使得一部分人产生疑惑,因为这样设定的话,如果Web Server上同时存在着几个Web App,而且各自使用不同编码,那这样设定的话就会使得其他Web App显示不正常,因此我们可以利用Directory去指定具体的Web App的目录,如下
- <Directory "D:/Apache Software Foundation/Apache2.2/htdocs/discuz/bbs">
- AddDefaultCharset utf-8
- </Directory>
这样每一个处于不同目录的Web App就可以运行在不同的编码环境中。