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 中的类
Oct 09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php 分库分表hash算法
Nov 12 PHP
PHP 编程安全性小结
Jan 08 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
PHP实现简易图形计算器
Aug 28 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
九种js弹出对话框的方法总结
2013/03/12 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Python for循环生成列表的实例
2018/06/15 Python
Python之list对应元素求和的方法
2018/06/28 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
纽约海:Sea New York
2018/11/04 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
拓展培训心得体会
2014/01/04 职场文书
食品销售计划书
2014/04/26 职场文书
体育教师求职信
2014/06/30 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
电话营销开场白
2015/05/29 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python