php插入中文到sqlserver 2008里出现乱码的解决办法分享


Posted in PHP onJuly 19, 2012

今天使用php操作数据库时发现插入SQL Server 2008数据库里的中文字段出现乱码,下面是我一开始时的一些情况:

开发环境是php5.3.3+Apache2.2.17+SQL Server 2008,php脚本文件的编码是utf-8,传给数据库的编码是GB2312(SQL Server的默认字符编码可能是这个,我不肯定),我用的是微软官方提供的SQLSRV库来连接数据库的(PS:SQL Server 2005开始已经不支持用mssql.dll来连接了),故使用sqlsrv_query($conn, "set names GB2312");语句来设置传给数据库的编码格式的,sql语句这样写了:insert into Opinion (content) values ('aaa中文内容');

运行这条sql语句,发现执行不成功,用sqlsrv_errors()函数来输出错误信息,得到如下结果:

Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -46 [code] => -46 [2] => An error occurred translating the query string to UTF-16: �ڶ��ֽڵ�Ŀ�����ҳ�У�û�д� Unicode �ַ����ӳ�䵽���ַ� . [message] => An error occurred translating the query string to UTF-16: �ڶ��ֽڵ�Ŀ�����ҳ�У�û�д� Unicode �ַ����ӳ�䵽���ַ� . ) )

这是在网页上显示的结果,上面的乱码是原封不动copy下来的。从 “An error occurred translating the query string to UTF-16”可以看出是字符编码转换有问题导致的。于是我使用php的iconv函数来对中文进行强制编码转换,然后执行sql语句,代码如下:

$string = iconv('utf-8', 'GB2312//IGNORE', 'aaa中文内容'); 
$sql = "insert into Opinion (content) values ( $string)"; 
[code] 
这时候又报错了,错误信息如下: 
[code] 
Array ( [0] => Array ( [0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [code] => 207 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]���� 'aaa��������' ���� [message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]���� 'aaa��������' ���� ) )

这个错误信息看不出什么头绪,我又把sql语句输出到网页上看一下是不是sql语句写错了,输出结果如下:

insert into Opinion (content) values ( aaa��������)

咋一看好像没问题,其实是有问题的,注意到后面那个括号里的参数是应该用引号来括起来的(表示它是一个字符串),所以我又修改了sql语句,代码如下:

$sql = "insert into Opinion (content) values ( '".$string."')"; 为了看清楚我放大点

用单引号把$string括起来,这样之后执行sql语句成功,并且数据库里保存的中文没有乱码。

PHP 相关文章推荐
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
php的memcached客户端memcached
Jun 14 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 #PHP
PHP的5个安全措施小结
Jul 17 #PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 #PHP
UCenter 批量添加用户的php代码
Jul 17 #PHP
一个简单的网页密码登陆php代码
Jul 17 #PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 #PHP
php生成静态文件的多种方法分享
Jul 17 #PHP
You might like
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
python获取元素在数组中索引号的方法
2015/07/15 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
歌唱比赛主持词
2014/03/18 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
教师三严三实心得体会
2014/10/11 职场文书
学习作风建设心得体会
2014/10/22 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
工作后的感想
2015/08/07 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
vue动态绑定style样式
2022/04/20 Vue.js