【问题标题】:How to make HTML character set take preference over browser text encoding?如何使 HTML 字符集优先于浏览器文本编码?
【发布时间】:2016-04-08 10:27:33
【问题描述】:

我的网页有一些汉字。当浏览器文本编码为“Unicode”时,一切都很好。但是当我把它改成“西方”时,汉字就变得乱七八糟了。

无论浏览器编码如何,我都希望页面以 UTF-8 显示。怎么做?

收到的 JSP 响应标头具有 Content-Type: "text/html;charset=UTF-8"。当我检查网络选项卡中的响应时,它是正确的(在 UTF-8 中)。 JSP 也有

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

即使提到了所有这些字符集,浏览器文本编码仍然是首选。这可以被覆盖吗?无论浏览器编码如何,页面都可以始终为“UTF-8”吗?

注意:我检查的浏览器是火狐。

文本框已预先填充了来自服务器的中文字符。

这是当浏览器文本编码为“Unicode”时。

document.charset 是“UTF-8”


这是浏览器文本编码为“西方”的情况。

document.charset 是“windows-1252”

请帮忙。

【问题讨论】:

  • 什么样的普通用户会访问您的网站,看到正确的文本,明确选择不同的编码,然后除了 mojibake 之外还期待什么?这确实不是一个值得担心的问题。该设置通常也会随着每个新页面/域而重置,它不会作为默认设置保留。

标签: html unicode encoding utf-8 character-encoding


【解决方案1】:

无论浏览器编码如何,我都希望页面以 UTF-8 显示。怎么做?

你不能。*

在浏览器的编码菜单中手动选择编码应该覆盖网站所说的关于编码应该是什么的任何内容。

您无法阻止这一点,您也不应该这样做。

强迫浏览器使用网站不支持的编码的任何人都应自行负责。

* 很好,除了在图像中显示所有文本。或在 Flash 电影中。 :)

【讨论】:

  • 这实际上是向数据库发送垃圾数​​据。无论如何我可以将这些字符改回“UTF-8”吗?在 javascript 或 java 中?
  • 这当然是可能的,绝对是在服务器端。不过,这可能是一项巨大的努力,尤其是当您必须满足任何可能的编码时。如果document.encoding 不是UTF-8,我个人会阻止提交表单。这在您的用户中不是每天都会发生的事情,不是吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2017-06-18
  • 2021-11-15
相关资源
最近更新 更多