我在 CentOS 6.4 服务器上有一个简单的 html 网站。在每个 html 页面中我都设置了
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我已经在 .htaccess 文件中添加了以下行
IndexOptions Charset=UTF-8
并在网站的 httpd.conf 文件中添加了
<VirtualHost *:80>
/* other stuff */
AddDefaultCharset UTF-8
IndexOptions Charset=UTF-8
</VirtualHost>
在主 httpd.conf 中,
AddDefaultCharset UTF-8
也已设置。
当我在 Chrome 中调试时,我仍然发现我的请求标头是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
我的响应标头是:
Content-Type: text/html; charset=iso-8859-1
访问我得到的语言环境命令
LANG=el_GR.UTF-8
LC_CTYPE="el_GR.UTF-8"
LC_NUMERIC="el_GR.UTF-8"
LC_TIME="el_GR.UTF-8"
LC_COLLATE="el_GR.UTF-8"
LC_MONETARY="el_GR.UTF-8"
LC_MESSAGES="el_GR.UTF-8"
LC_PAPER="el_GR.UTF-8"
LC_NAME="el_GR.UTF-8"
LC_ADDRESS="el_GR.UTF-8"
LC_TELEPHONE="el_GR.UTF-8"
LC_MEASUREMENT="el_GR.UTF-8"
LC_IDENTIFICATION="el_GR.UTF-8"
LC_ALL=
/etc/sysconfig/i18n 有以下几行
LANG="el_GR.UTF-8"
SYSFONT="latarcyrheb-sun16"
我仍然尝试访问标题为希腊语的每个 URL,但都会收到 404 错误,表示未找到 URL /συχνÎÏ‚_εÏωτήσεις.html。页面在那里,但出于某种原因编码不起作用。
我将非常感激任何帮助。谢谢
答案1
该IndexOptions
指令仅对 apache 自动生成的目录列表有效,对实际提供的 html 页面无效。
您的请求未指定任何类型的编码,它不会对您的页面生成产生任何影响。
这内容(也是静态 html 文件的实际编码)也不应该改变任何东西,而不是它的<meta
设置。
在您的案例中,唯一有效的指令是AddDefaultCharset UTF-8
。它必须起作用。某些东西可能正在覆盖您的字符集。
如果您提供一个简单的文本文件,会发生什么?您会得到一个 utf8 http 回复标头吗?
答案2
检查你的 hmtl 文件:
file /var/www/html/your_page.html
也许您的编辑器保存了 Latin-1 编码。
要更改编码,请尝试:
iconv -f ascii -t utf8 [filename] > [newfilename]
或者
recode UTF-8 [filename]