用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4989|回复: 2
收起左侧

微软的驱动sqlsrv读取sqlserver乱码

[复制链接]
发表于 2011-2-22 19:05:18 | 显示全部楼层 |阅读模式
本帖最后由 Minux2007 于 2011-2-22 19:12 编辑

不知道这里有没有人用微软提供的驱动访问sqlserver2005的,
之前PHP5.3.1用的还是PHP自带的驱动,读取text字段的话是将其转成varchar
现在升级了PHP就使用了微软提供的sqlsrv来操作数据库,这样不用每次进行编码转换,但是在读取text 字段类型的时候会有问题,总是将一些不属于该字段的内容已乱码的形式读取出来

读取的数据如果比较短的话不会有问题,但是如果比较长好像是1700+长度后就出现问题了
不知道是自己哪一步没有处理好,是不是读取text还有什么特别操作?
发表于 2011-3-26 09:00:45 | 显示全部楼层
我最近有用到ci和mssql的组合,也遇到楼主的问题。都解决了。

1. 乱码是由于mssql数据库编码引起的。解决乱码要在 存入的时候要将utf-8转为gbk, 取出的时候要将gbk转为utf-8。

2. Text字段被截断是由于php.ini的默认设置。在php.ini找到如下设置, 改为-1(不限制)或改大即可。
mssql.textlimit   =   4096
mssql.textsize   =   4096
 楼主| 发表于 2011-3-27 13:52:48 | 显示全部楼层
回复 2# hh2hh


   我用的是MS提供的驱动,可以不需要转换编码了,我在读取非text字段都没问题,但是读取text字段就会出现问题,好像是把其他一些非字段中的内容也读出来了,就像我从内存地址中读8字节数据,却读出了10字节

本版积分规则