0

似乎当我在我的数据库中添加任何特殊字符(如©和®)时,它会保存它,包括这个字符:Â,所以它像这样保存它©现在越来越多地弹出。

我可以认为当我保存数据时数据库正在这样做(但它似乎只是目前正在发生),也许是因为浏览器?由于我在将数据保存到数据库时没有对数据进行 HTMLEncode,但可能不是因为我自己无法亲自重现该问题,所以想知道其他人是否也遇到过同样的问题?

你认为这是网络浏览器做的吗?也许是因为通过 jQuery 提交表单而发生的?造成这种情况的罪魁祸首可能是什么?

4

1 回答 1

1

这是由不匹配的编码引起的,通常应用程序的一部分使用 iso-8859-1 而另一部分使用 utf-8

检查您的数据库和单个表定义、您的网页内容编码和您的表单编码。确保它们始终使用相同的编码。我们端到端使用 utf-8。


我们使用的是 MySQL,而不是 SQL Server,所以我不知道细节。对于 MySQL,我们定义表的 DDL 文件通常以类似的结尾

    SOMEDATA VARCHAR(100),
    INDEX USER_ID
)
engine = InnoDB
default character set utf8
collate = utf8_general_ci

并在所有/生成的页面中包含的通用标题中

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<form>标签中,您可以明确设置接受字符集

<form accept-charset="utf-8" (etc)>

在 SO 上查看这个不完全相关的问题

于 2012-07-09T17:57:04.120 回答