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中的MVC模式运用技巧
May 03 PHP
php自动跳转中英文页面
Jul 29 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 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
php下获取客户端ip地址的函数
2010/03/15 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
Python实现随机爬山算法
2021/01/29 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
迟到检讨书800字
2014/01/13 职场文书
副董事长岗位职责
2014/04/02 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
学校推普周活动总结
2015/05/07 职场文书
大学团日活动总结书
2015/05/11 职场文书
行政申诉状范文
2015/05/20 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
北京爱情故事观后感
2015/06/12 职场文书
中学政教处工作总结
2015/08/13 职场文书