【问题标题】:How to force UTF-8 encoding in browser?如何在浏览器中强制使用 UTF-8 编码?
【发布时间】:2011-12-10 05:30:56
【问题描述】:

我有一个用

声明编码的页面
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

但是当我进入页面时,在浏览器中选择了另一种编码 (ISO)。我尝试通过PHP方法设置编码

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

但这也无济于事。所有源文件都以 UTF-8 编码,没有 BOM。我尝试过的唯一解决方案是通过添加AddDefaultCharset UTF-8 行在.htaccess 文件中设置编码,但是服务器上的其他页面没有正确显示。我该如何解决这个问题?

【问题讨论】:

  • 请注意,当通过 HTTP 提供页面时,元内容类型标记将被忽略。仅当您让浏览器将页面保存到磁盘然后通过file:/// 从磁盘打开它时使用。当通过 HTTP 提供页面时,使用 HTTP 响应 Content-Type 标头的 charset 属性中指定的字符集。也许您在 PHP 中设置标头为时已晚(必须在向响应写入任何位之前设置它,但是如果您设置了正确的 PHP 错误报告级别,您会收到此错误的通知)。
  • 您如何识别编码不同?字符显示不正确?是否是 SQL DB 获取的文本,在这种情况下 mysql_set_charset 可以提供帮助...
  • @Ergo:在.htaccess 中设置AddDefaultCharset UTF-8 无法解决这个问题。
  • 啊,不知道-谢谢! +1
  • @BalusC: &lt;meta&gt; 用于确定页面的字符编码,即使该页面是通过 HTTP 提供的。但是,Content-Type 标头优先于 &lt;meta&gt; 标记(如果存在)。见w3.org/TR/html401/charset.html#h-5.2.2

标签: php html utf-8 character-encoding


【解决方案1】:

禁用默认字符集:

AddDefaultCharset Off

【讨论】:

  • 我认为,这将导致服务器上必须以 ISO 编码的其他页面将无法正确显示。 (类似于AddDefaultCharset UTF-8。)
  • 如果 apache 没有在 headers 中发送字符集,浏览器会猜测编码。他们很可能会猜到 iso-8859-2。
  • 你是对的,它有帮助。我希望它是有效的并且符合标准。
  • 不用担心无效。这是apache的默认值。不知何故,您的服务器配置不同。所以你现在很好。
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多