php连接mssql,获取的结果中文乱码,pdo_dblib扩展使用的是apt-get install php5-sybase方法安装的,尝试了修改freetds.conf php.ini 文件编码 页面编码以及系统字符集都没有解决问题,在freetds客户端下也是乱码,折腾了n多天,没有搞定,最后得知编译安装可以解决此问题,于是尝试编译搭建环境(主要是不知道apt搭建的环境能不能编译安装扩展),下载了freetds(慢的雷人啊,这是的网盘分享http://pan.baidu.com/share/link?shareid=217028745&uk=1426231065),然后编译安装,惊讶的发现,客户端查询的中文正常了,看来有戏啊。
使用lnmp集成环境搭建环境,然后漫长的安装后:
1 进入pdo_dblib目录,cd ~/lnmp1.0-full/php-5.3.17/ext/pdo_dblib 2 3 执行sudo /usr/local/php/bin/phpize 4 5 sudo ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds 6 7 sudo make && make install 8 9 sudo echo 'extension=pdo_dblib' >> /usr/local/php/etc/php.ini 10 11 sudo service php-fpm restart
打开php页面,看到中文已经正常了
附tsql客户端连接的命令
/usr/local/freetds/bin/tsql -H 192.168.1.100 -p 1433 -U sa -P 123456 -D user
1 如果连不上数据库,就检查一下版本,将/usr/local/freetds/etc/freetds.conf中global选项中tds version = 8.0 2 3 如果查到的结果是乱码,更改/usr/local/freetds/etc/freetds.conf将global中添加了一条client charset = UTF8