sqlserver中文生僻字乱码问题解决
场景:前端输入生僻字,e.g. 㙍、㮾,存入到数据库为乱码(㙍/…)。
解决:修改会存生僻字的字段(一般地址字段)的数据类型为nvarchar,在插入或更新sql里该字段值前加大写N,并且在前端页面注意编码解码。
样例:
1、数据库表设计里,修改字段类型为nvarchar(100)
2、db层代码 拼sql:
sSQL = “UPDATE tableName SET Address = N” & utdb.encodeS(sAddress) &" Where 。。。"
3、前端传参接收参数要编码解码:
输入后,提交表单时escape
$("#btnUpdate").click(function(){$("#Address").val(escape($("#Address").val()));....}
接收时该参数时,解码
sAddress = Unescape(request("Address"))
可能遇到的问题:
数据类型和sql改为以上所述后,从前端输入仍存入到数据库为乱码,此时一步步debug发现可能传参编码仍有问题。可能是escape和unescape漏了或使用错误。
我真的人傻了,卡了半天发现escape用错了。。想挖地洞钻下去。