当前位置:编程学习 > php >>

windows下面php pdo_odbc连接mssql2000更新中文乱码的处理分享

由于特殊原因,本人需要在windwos下面用php的pdo_odbc连接mssql2000

结果pdo->execute() 更新数据,数据库内容是乱码,想了很多方法现在分享如下:


乱码原因:在windows下对不支持unicode utf-8编码的程序,会默认使用GBK编码,而实际上ODBC在php实现内貌似是不支持utf-8的,因为utf-8编码的字符串提交给ODBC无法执行。


1,程序文件是utf-8格式的时候:

utf8编码字符串转换成gb2312编码 

$zzzyk="易做图头像设计";

$yizuotu=@iconv( "utf-8", "gb2312//IGNORE",$zzzyk);

//使用@易做图错误,如果转换字符串中,某一个字符在目标字符集里没有对应字符,那么,这个字符之后的部分就被忽略掉了; 

//即结果字符串内容不完整,此时要使用//IGNORE 

强行转换中文,入库以后就不是乱码

使用iconv()转码后处理插入的信息和查询的结果

$sql="select * from yizuotu_net where title='易做图'";
$sql=iconv('UTF-8', 'GBK', $sql);


我在本地测试:

解决方案是对Windows执行以下更改

控制面板>区域>管理>更改系统区域设置>选中“使用Unicode UTF-8获得全球语言支持是的

2,直接将程序代码文件全部另存 改成 ansi编码



总之不是万不得已,尽量不要这么玩,例如mssql 2000 以后的版本 又或者在 linux下面连接mssql 都有很多方法解决
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,