在我的网页中,有一个包含多个输入的表单。但是,输入字符的行为与输入“标签”字符的行为不同。我尝试将文件编码设置为UTF-8和UTF-8 + BOM(我正在使用EditPlus)。
使用UTF-8:
使用UTF-8 + BOM:
输入字符来自mysql数据库,其中排序规则为utf8_unicode_ci(使用phpmyadmin),因此我不知道这是否是问题的来源。有什么想法吗?
答案 0 :(得分:1)
这意味着两条数据的编码不同。如果文件被解释为Latin-1(或类似的编码),您将获得输入字段中的数据有效的第一个结果(意味着它是Latin-1编码的),但标签是错误的(意味着它不是拉丁文 - 1编码)。当文件被解释为UTF-8时,标签是正确的(意味着它是UTF-8编码的),但输入字段中的数据是错误的(意味着它不是UTF-8编码的)。如果数据显示为 UNICODE REPLACEMENT CHARACTER,则表明文档被解释为Unicode编码(例如UTF-8),但字节序列无效。
我猜测标签在文件中是硬编码的,但输入字段中的数据来自数据库。在这种情况下,您需要将数据库的连接编码设置为返回UTF-8。
至于为什么文件在没有BOM的拉丁文-1和用BOM的UTF-8中解释:因为浏览器将BOM识别为表示UTF-8,没有它,它默认为Latin-1。您需要设置正确的HTTP标头以告诉浏览器该文件的编码,并删除BOM。
阅读以下资源:
答案 1 :(得分:0)
解决了它:刚刚将文件编码更改为“Western European(Windows)1252”(使用EditPlus),现在每个字符都正确显示。