为什么这个角色会在我的db中弹出:保存其他特殊字符时?

时间:2012-07-09 17:52:35

标签: javascript jquery sql sql-server firefox

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

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

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

1 个答案:

答案 0 :(得分: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>标记中,您可以明确设置 accept-charset

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

在SO

上看到这个不完全相关的question