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

posted on 2011-03-30 22:56  欧阳柠檬  阅读(1524)  评论(0)    收藏  举报

导航