0

在我的网页中,有一个包含多个输入的表单。但是,输入字符的行为与输入“标签”字符不同。我尝试将文件编码设置为 UTF-8 和 UTF-8 +BOM(我使用的是 EditPlus)。

使用 UTF-8:

在此处输入图像描述

使用 UTF-8 + BOM:

在此处输入图像描述

输入字符来自 mysql 数据库,其中排序规则是 utf8_unicode_ci(使用 phpmyadmin),所以我不知道这是否是问题的根源。有任何想法吗?

4

2 回答 2

1

这意味着两条数据的编码不同。如果文件被解释为 Latin-1(或类似的编码),您会得到第一个结果,其中输入字段中的数据是有效的(意味着它是 Latin-1 编码的)但标签是错误的(意味着它不是 Latin- 1 编码)。当文件被解释为 UTF-8 时,标签是正确的(意味着它是 UTF-8 编码的)但输入字段中的数据是错误的(意味着它不是 UTF-8 编码的)。如果数据显示为 UNICODE REPLACEMENT CHARACTER,则表明文档被解释为 Unicode 编码(例如 UTF-8),但字节序列无效。

我猜标签在文件中是硬编码的,但输入字段中的数据来自数据库。在这种情况下,您需要将数据库的连接编码设置为返回 UTF-8。

至于为什么在没有 BOM 的 Latin-1 和带有 BOM 的 UTF-8 中解释文件的原因:因为浏览器将 BOM 识别为表示 UTF-8,没有它它默认为 Latin-1。您需要设置正确的 HTTP 标头来告诉浏览器文件的编码是什么,并摆脱 BOM。

阅读这些资源:

于 2013-06-27T11:02:59.470 回答
0

解决了它:刚刚将文件更改为“西欧(Windows)1252”(使用EditPlus),现在每个字符都正确显示。

于 2013-06-27T11:12:55.820 回答