【问题标题】:Is there any benefit to adding accept-charset="UTF-8" to HTML forms, if the page is already in UTF-8?如果页面已经是 UTF-8,那么在 HTML 表单中添加 accept-charset="UTF-8" 有什么好处吗?
【发布时间】:2011-04-12 19:24:35
【问题描述】:

对于已经指定的页面(通过 HTTP 标头或元标记),具有带有 UTF-8 字符集的 Content-Type...将accept-charset="UTF-8" 添加到 HTML 表单是否有好处?

(我知道accept-charset 属性在 IE 中针对 ISO-8859-1 已损坏,但我还没有听说 IE 和 UTF-8 存在问题。我只是问添加它是否有好处使用 UTF-8,以帮助防止输入无效的字节序列。)

【问题讨论】:

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


【解决方案1】:

在 IE (6+) 或任何其他主流浏览器中使用 UTF-8 时,我没有遇到任何问题。您需要确保设置了 UTF-8 元标记(IE 需要此标记)并且您的所有文件都是 UTF-8 编码的(这意味着网络服务器发送 UTF-8 标头)。那么省略accept-charset应该没有问题。

【讨论】:

  • 我正在做这些事情,没有那个表单属性,我遇到了一些输入无效 UTF-8 的情况 (stackoverflow.com/questions/3715264/…),所以我试图确定是否添加这对我所有的表格都会有帮助或不必要。
  • @philfreo:我从来没有用过一次,也没有任何问题。您能给我们一个指向您页面的链接吗?
  • 如果您的页面确实以 UTF-8 格式提供,您不应该从该表单收到非 UTF-8 提交。当然,如果您有其他网站嵌入了指向您网站的表单,或者自动代理通常提交内容,那么所有的赌注都没有了。
  • 我们的服务器以 UTF-8 格式提供所有页面,我们不会(有意)从其他来源接收数据。我们没有得到很多无效的 UTF-8,但我们确实偶尔会得到一些。正如我的另一个问题所表明的那样,寻找解决该问题的整体方法。这个问题我希望最终听到accept-charset 属性在给定 UTF-8 http 标头的情况下是否必要(有任何区别)。
【解决方案2】:

如果页面已被浏览器解释为 UTF-8,则设置 accept-charset="utf-8" 不会执行任何操作。

如果您在<meta> 和/或 HTTP 标头中将页面的编码设置为 UTF-8,它将被解释为 UTF-8,除非用户故意转到视图->编码菜单并选择不同的编码,覆盖您指定的编码。

在这种情况下,accept-encoding 的作用是将提交编码设置回 UTF-8,以防用户弄乱页面编码。但是,由于之前在该浏览器中与accept-encoding 讨论过的问题,这仍然无法在 IE 中运行。

因此,IMO 怀疑是否值得包含 accept-charset 来解决非 IE 用户故意破坏页面编码的情况(可能在您的页面上弄乱的不仅仅是表单)。

就我个人而言,我不介意。

【讨论】:

  • 你确定吗?这是有道理的,但文档说 may interpret 并且默认值为 UNKNOWN。
  • 在所有浏览器上(现在和历史上),UNKNOWN/unset 始终表示当前页面编码,无论是在 header/meta 中设置的服务器页面编码,还是由用户作为替代。可能不会影响您的例外情况:大多数浏览器不会以非 ASCII 超集编码(如 UTF-16)发送表单提交,即使页面是这样提供的。这样做真的没有意义。
猜你喜欢
  • 1970-01-01
  • 2020-10-26
  • 2018-12-31
  • 2016-10-11
  • 1970-01-01
  • 2018-09-24
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多