首页 » 数据库 » php使用dblib扩展,连接sqlserver中文乱码问题

php使用dblib扩展,连接sqlserver中文乱码问题

高蒙 2017/03/16 10:44 5.3k浏览 0评论 SQL SERVER


在使用php链接sqlserver的时候,查询出来的数据,编码不稳定,一会utf8,一会出现问号。很纠结。下面的方法,可以解决此种问题。前提是dblib扩展。


如果查到的结果是乱码,更改/usr/local/freetds/etc/freetds.conf将global中添加了一条

client charset = UTF8

切记,修改完毕记得重启。

附加:

php安装dblib扩展的方法步骤。(备注,一下步骤,没有验证。)


1.先安装freetds 然后修改配置文件


不要装0.82版本,会报编译失败

Compile Failure With freetds0.82

进到freetds目录下编译安装

./configure --prefix=/usr/local/freetds --enable-msdblib --enable-sybase-compat   --disable-threadsafe
make
make install


2.再装mssql


进到目录下编译安装

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
make
make install


3.再装dblib


进到目录下编译安装

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds
make
make install


4.修改php.ini


extension=mssql.so
extension=pdo_dblib.so


tsql客户端连接的命令

/usr/local/freetds/bin/tsql -H 192.168.1.100 -p 1433 -U sa -P 123456 -D user


修改配置文件

/usr/local/freetds/etc/freetds.conf 配置文件位置

tds version = 8.0 //修改
client charset = UTF8 //新增


如果连不上数据库,就检查一下版本,将/usr/local/freetds/etc/freetds.conf中global选项中tds version = 8.0 

如果查到的结果是乱码,更改/usr/local/freetds/etc/freetds.conf将global中添加了一条    client charset = UTF8


Adaptive Server is unavailable or does not exist” error connecting to SQL Server from PHP    是没加端口引起的

要加端口不然连不上

'dblib:host=192.168.8.888:1433;dbname=xxxx'





相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    485

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。