【问题标题】:How is a browser overriding my UTF-8 header setting and how do I stop it?浏览器如何覆盖我的 UTF-8 标头设置以及如何阻止它?
【发布时间】:2012-01-08 16:40:03
【问题描述】:

我创建了一个带有简单 CMS 系统的网站。所有文本都在标准文本框中输入,无法添加粗体或其他任何东西:您只需使用原始 HTML。

其中一个贡献者是在旧笔记本电脑上使用 IE7 并且(据我所知无法升级它或其他东西)。无论哪种方式,我已将所有页面设置为使用 UTF-8,并在标题中使用:

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

问题在于,他的浏览器不知何故在输入文本时将其强制为“西方 (ISO-8859-1)”,因此当他的帖子随后显示时,UTF-8 使它们看起来一团糟那些?到处都是黑色钻石。我可以通过将视图覆盖为 ISO-8859-1、复制然后粘贴回 UTF-8 设置的浏览器来进行更正,但显然这并不理想。

谁能告诉我他的电脑上的什么设置可能会导致这种覆盖?我已经告诉他如何访问 IE7 上的编码并将其设置为“自动”,但它显然又回来了,所以也许还有别的东西。

【问题讨论】:

  • 可能是IE的bug,他安装了所有的MS更新吗?
  • 我已经要求他这样做了。我再问一次。他是一个非常忙碌的人,并且对计算机并不熟悉(据我所知)并且(最重要的是)我可以直接去很远的地方。谢谢。
  • 什么标头与您的 HTP 响应一起发送,最值得注意的是 content-type 标头的值是什么? (与内容类型元标记不同)。您应该可以使用 firebug 或 Web 开发工具栏或类似工具进行检查。
  • 为什么让开发人员使用旧技术做出贡献?让他升级,就是这个问题,所以从源头上解决。不要为此制定解决方法。
  • @Kyle Sevenoaks - 这可能不是开发人员,而是有人将文本放入 CMS。可能是他们不是特别精通技术。解决这个问题会使他们的生活更轻松,应用程序更强大。这不是我们的工作吗?

标签: php html css utf-8 iso-8859-1


【解决方案1】:

&lt;meta&gt; 元素只能建议浏览器做什么——它不能(据我所知)覆盖服务器发送的任何标头。元元素必须尽早出现在文档的&lt;head&gt; 中。你也可以试试更新的&lt;meta charset="utf-8"&gt;

更强大的方法是send the header from the server。我从问题的标签中假设您可以访问 PHP。您可以像这样设置header

<?php
    header ('Content-type: text/html; charset=utf-8');
?>

你想把它放在文档的顶部,在任何 HTML 传输到浏览器之前。

【讨论】:

  • 谢谢,这一切都是用 PHP 完成的,所以我确实可以做到。我会试一试,看看它是如何工作的。
猜你喜欢
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2012-05-18
  • 2019-11-20
  • 2018-02-21
  • 2014-10-10
相关资源
最近更新 更多