HTML表单是否使用默认字符集?或者是否使用了默认的accept-charset属性?
我们的在线表单中遇到了字符和字符集的一些问题。
HTML页面设置为使用字符集ISO-8859-1(使用content
元标记),但表单中没有设置特定的accept-charset
属性。
后端的数据库使用UTF-8编码。
我不确定为什么这里使用了两个不同的字符集 - 这个决定在我的时间之前有点,而且不容易改变。
大多数时候,一切都很愉快。当有人输入一个未包含在ISO-8859字符集中的字符时会出现问题 - 它在浏览器中正确显示,但作为未知实体进入后端。 真的奇怪的是,然后它正确地将传回到了浏览器。
到目前为止,我假设即使用户将字符输入到不在ISO-8859字符集中的表单中,页面也会在将数据发送到meta
标签时使用{{1}}标记中的字符集。服务器;导致奇数实体显示在数据库中。这听起来像是一个可行的解释,并且 - 如果是这样 - 改变HTML页面的内容类型是否是合理解决问题的方法?
干杯。
答案 0 :(得分:2)
浏览器将在提供页面的同一个字符集中的输入中发送文本。 accept-charset
会导致问题,如果您使用它,请确保它与您的网页具有相同的字符集。
它是一个未知实体的原因是因为您的数据库将其视为UTF-8。但当它返回到页面时,它只是字节,这次被视为ISO-8859。
但是,如果您在文本中使用任何数据库的字符串函数,如果它将其视为UTF-8,则可能会导致问题。