使用http头指定字符编码iso-8859-1而不是utf-8的麻烦?

时间:2011-01-05 03:20:46

标签: utf-8 character-encoding http-headers iso-8859-1

我最近设计了一个包含德语和荷兰语字符的网站,我希望该页面使用字符编码utf-8。

我添加了xml声明:

<?xml version="1.0" encoding="UTF-8"?>

和元标记:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

当我在线查看网站时,德语文本中的特殊字符显示不正确。当我尝试使用w3c验证器验证页面时,我收到以下警告:

  

HTTP标头(iso-8859-1)中指定的字符编码与XML声明(utf-8)中的值不同。我将使用HTTP头中的值(iso-8859-1)。

这是服务器问题吗?只是我将相同的文件上传到我的不同服务器,并使用utf-8正确显示页面。

关于如何将页面编码为utf-8的任何帮助或建议将不胜感激。

我很难过!


感谢jason,我找到了一个名为mod_mime-defaults.conf的文件

此文件包含以下内容:

# AddDefaultCharset UTF-8
AddDefaultCharset ISO-8859-1

如果我在AddDefaultCharset UTF-8之前删除#,您认为这会有帮助吗?或者可以在AddDefaultCharset ISO-8859-1之前添加#。

我尝试编辑此文件,但我认为我没有获得许可。嗯...?

3 个答案:

答案 0 :(得分:3)

这可能是服务器问题。

如果您正在使用Apache,请检查位于* nix服务器上的/etc/httpd/conf/httpd.conf中的Apache配置文件,其值为AddDefaultCharset

此设置指定所有服务内容的默认值。如果它被注释掉,这意味着它将依赖于浏览器或META设置来确定Charset。

答案 1 :(得分:0)

HTML元标记与HTTP响应标头不同。您需要在HTTP响应头中设置字符编码。根据您的问题历史,您使用PHP - 或者至少熟悉它 - 所以这里是一个PHP目标示例,说明如何操作。

将以下行放在PHP文件中,然后回显任何字符。

header('Content-Type: text/html;charset=UTF-8');

另见:


与问题无关:您不应在 HTML 页面上添加 XML 声明。这是其他麻烦的秘诀。

答案 2 :(得分:-1)

我将charset = UTF-8更改为charset = iso-8859-1,警告消失了。