似乎当我向我的数据库添加任何特殊字符(例如©和®)时,它会保存它,包括这个字符:Â
,所以它会像这样保存©
它会弹出更多和现在更多。
我可以认为数据库在保存数据时正在执行此操作(但目前似乎正在发生),也许是因为浏览器?由于我在将数据保存到数据库时不对HTMLEncode进行编码,但可能不是因为我自己无法自己重现该问题,所以想知道其他人是否也遇到过同样的问题?
你认为这是网络浏览器吗?也许是因为通过jQuery提交表单而发生的?造成这种情况的罪魁祸首是什么?
答案 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