php5.4使用dblib扩展,连接sqlserver中文乱码问题

Posted 小刀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php5.4使用dblib扩展,连接sqlserver中文乱码问题相关的知识,希望对你有一定的参考价值。

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

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

client charset = UTF8

附加:

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

 

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

 

freetds编译安装

# wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
# tar -zxvf freetds-patched.tar.gz
# cd freetds-1.00.86

 # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
# 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‘




以上是关于php5.4使用dblib扩展,连接sqlserver中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

php dblib,错误:SQLSTATE[HY000] 未知主机名(严重性 2)

使用 PDO_DBLIB 连接到 MS SQL 数据库的 PHP 错误

LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展

wamp 64位 php5.4.12 扩展redis失败

php以pdo方式连接sqlserver,无法开启sqlsrv扩展

php 无法连接到 sql server 2008(使用 pdo dblib)