ODBC下乱码问题原理及解决

我在php中使用odbc连接mssql server时,在列名为英文,返回数据也为英文时一切正常。

但如果列名出现中文,会提示SQL state 07001参数缺少或者SQL state 37000错误。如果返回数据中存在中文则为乱码。

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

因此解决方案就很明了了,直接修改字符串编码转码为GBK,或者设置windows非unicode编码(设置->时间和语言->语言->管理语言设置->更改系统区域设置->勾选使用UTF-8提供全球语言支持 重启即可)

另外还有一点需要注意,是我最近在一个项目中遇到的。如果客户本地环境在台湾,香港,澳门等默认windows是使用的是繁体字符,编码就不再是GBK而是Big5了。这一点折磨了我2天,记录一下希望帮到别人。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值