php连接mssql插入中文数据错误的解决方法
最近一个小项目是用的mssq2008数据库,用的是php自带的mssql_query()函数,结果在插入数据的时候,碰到插入中文出错的情况。
错误的大体内容如下:
Warning: mssql_query(): Error converting client characters into server's character set. Some character(s) could not be converted. (severity 16) in /www/search1.php on line 70
Warning: mssql_query(): message: Unclosed quotation mark before the character string ''. (severity 15) in /www/search1.php on line 70
Warning: mssql_query(): message: Line 1: Incorrect syntax near ''. (severity 15) in /www/search1.php on line 70
查了一下,主要是mssql的数据库字符集(mssq中叫排序规则)和php页面的字符编码不同造成的。
mssql中使用了默认的排序规则 chinese_PRC_CI_AS
查询mssql默认的排序规则可以使用 exec sp_helpsort 得到
而一般的php页面用的是utf-8编码
具体的解决方法:
1.将页面的字符编码改写成gb2312中文编码,文件本身也改成gb2312编码
2.使用php的iconv函数,将要执行的sql字符串转换成相应的中文编码,
iconv("utf-8",'gb2312',"sqlstring");
以上两种方法数据都能正常插入。
另外查找的时候发现几篇文章可能也有用。
http://support.microsoft.com/kb/232580/zh-cn //utf-8 数据存储在 $ SQL Server 中的说明
http://topic.csdn.net/u/20100118/16/361e991b-6862-4370-bf02-dbb9a9a4f0e1.html
浙公网安备 33010602011771号