为什么我的 html 编码会导致错误?

发布于 2024-09-26 04:45:45 字数 525 浏览 3 评论 0原文

我正在开发一个网站,当我尝试验证页面时出现以下错误:

指定的字符编码 HTTP 标头 (iso-8859-1) 是 与中的值不同 元素(utf-8)。我将使用该值 来自 HTTP 标头 (iso-8859-1) 此验证。

这是我的标题中的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

我不知道 iso-8859-1 来自哪里。有什么建议吗?

谢谢。

I am working on a website and when I try to validate the page get the following error:

The character encoding specified in
the HTTP header (iso-8859-1) is
different from the value in the
element (utf-8). I will use the value
from the HTTP header (iso-8859-1) for
this validation.

Here is the code in my header:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

I don't see where the iso-8859-1 is coming from. Any suggestions?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏了南城 2024-10-03 04:45:45

Web 服务器指定 HTTP 标头中的编码。它将其设置为 iso-8859-1。但在您的页面中,您写道:

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

这两个值不兼容。我只能假设网络服务器是正确的(无论如何它已经发送了数据),并且验证器做出了相同的假设。

如果要发送UTF-8编码的文件,请检查内容是否确实是UTF8编码的,并检查标头信息。最终行为取决于网络服务器配置和页面生成。

It's the webserver which specify the encoding in the HTTP header. It set it to iso-8859-1. But in your page, you wrote:

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

these two values are incompatible. I can only suppose that the webserver is right (it has sent the data anyway), and the validator makes the same assumption.

If you want to send UTF-8 encoded files, check that the content is really UTF8 encoded, and check the header informations. Ultimately the behavior depends on the webserver configuration and page generation.

笑咖 2024-10-03 04:45:45

这是 HTML 文件的标头,而不是服务器发送的 HTTP 标头。 meta 元素定义了 HTTP 标头的等效项。如果发送了 HTTP 标头并且存在具有等效项的元元素,则用户代理必须决定使用哪个。它可能在您的浏览器中工作,但您使用的验证器似乎优先于实际的 HTTP 标头。

因此,您必须弄清楚如何使服务器发送正确的 Content-type 标头。如果您的页面是由 PHP 脚本生成的,您可以在脚本开头使用 header('Content-type:text/html;charset=UTF-8'); 来修复它。

That's the header of your HTML file, not the HTTP headers the server is sending. The meta element defines equivalents to HTTP headers. If both an HTTP header is sent and a meta element exists with the equivalent, the user agent must decide which to use. It might work in your browser but it seems the validator your are using gives precedence to the actual HTTP header.

So you have to figure out how to make your server send the correct Content-type header. If your page is generated by a PHP script you can use header('Content-type:text/html;charset=UTF-8'); at the beginning of your script to fix it.

冷…雨湿花 2024-10-03 04:45:45

检查发送的默认 HTTP 标头(您可以在 NET 选项卡中的 firebug 中看到这一点,如果你使用它)。

可能有一个 Content-Type 标头设置为 iso-8859-1

HTTP 标头与 HTML 标头(它是 HTTP 消息正文的一部分)不同 - 其中您的 META 标记指定 UTF-8 作为内容类型。

由于这两个值不兼容,因此您会收到错误。

解决方案:

  • 使两个内容类型相同(UTF-8iso-8859-1

Check the default HTTP headers that are sent (you can see this in firebug in the NET tab, if you use it).

There is probably a Content-Type header set to iso-8859-1.

HTTP headers are is different from the HTML header (which is part of the body of the HTTP message) - where your META tag specifies UTF-8 as the content type.

Since the two values are incompatible, you are getting an error.

Solution:

  • Make both content-types identical (either UTF-8, or iso-8859-1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文