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 删除cookie和浏览器重定向
Mar 16 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
Apache服务器无法使用的解决方法
May 08 PHP
深入PHP变量存储的详解
Jun 13 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP异常类及异常处理操作实例详解
Dec 19 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
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
vue-loader教程介绍
2017/06/14 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
跟老齐学Python之Python文档
2014/10/10 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
护士毕业生自荐信
2014/02/07 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle