http头指定字符编码iso-8859-1而不是utf-8时出现问题?

http头指定字符编码iso-8859-1而不是utf-8时出现问题?,utf-8,character-encoding,http-headers,iso-8859-1,Utf 8,Character Encoding,Http Headers,Iso 8859 1,我最近设计了一个包含德语和荷兰语字符的网站,我希望该页面使用字符编码utf-8 我添加了xml声明: <?xml version="1.0" encoding="UTF-8"?> 如果我从AddDefaultCharset UTF-8之前删除#,您认为这会有帮助吗?或者在AddDefaultCharset ISO-8859-1之前添加一个# 我试图编辑这个文件,但我想我没有权限。Hmmm…?HTML元标记与HTTP响应头不同。您需要在HTTP响应头中设置字符编码。根据您的问题历史记

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

我添加了xml声明:

<?xml version="1.0" encoding="UTF-8"?>
如果我从AddDefaultCharset UTF-8之前删除#,您认为这会有帮助吗?或者在AddDefaultCharset ISO-8859-1之前添加一个#


我试图编辑这个文件,但我想我没有权限。Hmmm…?

HTML元标记与HTTP响应头不同。您需要在HTTP响应头中设置字符编码。根据您的问题历史记录,您正在使用PHP,或者至少熟悉它,因此这里有一个针对PHP的示例,说明如何使用PHP

在回显任何字符之前,在PHP文件中放入以下行

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


与问题无关:您不应该在HTML页面上放置XML声明。这是导致其他类型故障的原因。

这可能是服务器问题

如果您使用的是Apache,请检查通常位于*nix服务器上/etc/httpd/conf/httpd.conf的Apache配置文件,查看
AddDefaultCharset
的值


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

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

Hmmm。。。我这里不使用任何php文件,只使用.html文件。如果我删除xml声明,我只会从w3c validator收到相同的警告,但只是说“HTTP头(iso-8859-1)中指定的字符编码与元声明(utf-8)中的值不同。我将使用HTTP头(iso-8859-1)中的值”。如果可能的话,我真的需要将http头更改为utf-8,或者使元声明优先于http头。我真的不太确定我在这里做什么?@ade123-如上所述。这听起来很像AddDefaultCharset的Apache服务器设置,因为该设置旨在覆盖您的元设置。然后您需要在Web服务器本身中进行配置。单击第二个“请参阅”链接以了解有关HTTP响应头和HTML元标记之间的差异的详细信息。@BalusC您能帮助解决此问题吗?您需要同时执行这两项操作,注释掉ISO行并删除UTF-8行上的#。#字符注释掉了该行,但您需要获得编辑此文件的权限。“AddDefaultCharset ISO-8859-1”意味着您的web服务器提供的所有文件都将默认为ISO-8859-1.ok,因此听起来我确实需要更改名为mod_mime-defaults.conf的文件,以便将AddDefaultCharset ISO-8859-1注释掉,而将AddDefaultCharset UTF-8注释掉。我似乎没有权限修改这个文件。我想我得试着让服务器所有者试试这个。嗯……根据该用户的服务器权限,您可以使用所需的
AddDefaultCharset utf-8
规则将.htaccess文件上载到网站根目录。这将覆盖全局服务器设置。meta标记中的编码应等于服务器编码,例如
AddDefaultCharset utf-8
<代码>utf-8是连字符的。问题注释中提供的解决方案更好、更详细
# AddDefaultCharset UTF-8
AddDefaultCharset ISO-8859-1
header('Content-Type: text/html;charset=UTF-8');