【问题标题】:HTML form, character sets, and the accept-charset attributeHTML 表单、字符集和 accept-charset 属性
【发布时间】:2011-09-28 11:11:19
【问题描述】:

是否有 HTML 表单使用的默认字符集?或者是否使用了默认的 accept-charset 属性?

我们的在线表单中的字符和字符集遇到了一些问题。

HTML 页面设置为使用字符集 ISO-8859-1(使用 content 元标记),但表单中没有设置特定的 accept-charset 属性。

后端的数据库使用 UTF-8 编码。

我不知道为什么这里使用了两种不同的字符集——这个决定比我早一些,而且不能轻易改变。

大多数时候,一切都很顺利。当有人输入未包含在 ISO-8859 字符集中的字符时,问题就出现了——它在浏览器中正确显示,但作为未知实体进入后端。 真的奇怪的是,它然后将返回正确地传输到浏览器。

到目前为止,我假设即使用户在表单中输入了不在 ISO-8859 字符集中的字符,页面在向服务器发送数据时也会使用来自meta 标签的字符集;导致奇怪的实体显示在数据库中。这听起来像是一个可行的解释吗?如果是的话,更改 HTML 页面的内容类型是否是解决问题的合理解决方案?

干杯。

【问题讨论】:

    标签: html character-encoding


    【解决方案1】:

    浏览器将使用与页面服务相同的字符集从输入中发送文本。 accept-charset 可能会导致问题,如果您使用它,请确保它与您的页面具有相同的字符集。

    它是未知实体的原因是您的数据库将其视为 UTF-8。但是当它返回到页面时,它只是字节,这次被视为 ISO-8859。

    但是,如果您在将文本视为 UTF-8 的情况下对文本使用数据库的任何字符串函数,则可能会导致问题。

    【讨论】:

    • 哦,是的 - 这是有道理的。所以 - 如果我们将数据库中的字符更改为正确的 UTF-8 代码,那么我们可能会遇到它在网页中显示不正确的问题?
    • @nihilogist 尝试将数据库的字符集设置为 ISO-8859,看看会发生什么。
    • 遗憾的是,我不认为这会成为实时数据库的一个选项,但我会在旧的测试数据库上试一试,看看我们能找到什么。谢谢!
    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 2020-11-10
    • 2016-10-11
    • 2015-02-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多