CentOS 6.4 中的 URL 编码强制为 UTF-8

CentOS 6.4 中的 URL 编码强制为 UTF-8

我在 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]

相关内容