使用 PHP FreeTDS 扩展从 MSSQL 服务器获取 UTF-8 字符集的数据

2024-02-03

我似乎无法使用 FreeTDS 扩展从 MSSQL 获取编码为 UTF-8 的数据。

连接:

ini_set('mssql.charset', 'UTF-8');
$this->_resource = mssql_connect($config['servername'], $config['username'], $config['password']);

我无法使用任何其他扩展。

我尝试创建 ~/.freetds.conf

[global]
client charset = UTF-8

我尝试过将参数传递给 php:

php -d mssql.charset="UTF-8" index.php

数据仍然不是 UTF-8。

php -i

mssql

MSSQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Library version => FreeTDS

Directive => Local Value => Master Value
mssql.allow_persistent => On => On
mssql.batchsize => 0 => 0
mssql.charset => no value => no value
mssql.compatability_mode => Off => Off
mssql.connect_timeout => 5 => 5
mssql.datetimeconvert => On => On
mssql.max_links => Unlimited => Unlimited
mssql.max_persistent => Unlimited => Unlimited

Ideas?


我遇到了类似的问题,并尝试了我可以在网上找到的所有设置 - 但徒劳。

就我而言,问题在于 FreeTDS 本身的配置。在 Linux 上,该文件是 /etc/freetds/freetds.conf

我必须将版本更改为 7.0(也许其他数字也可以。我刚刚尝试过 7.0)

[global]
    # TDS protocol version
    tds version = 7.0

之后,驱动程序似乎接受了字符集的更改。

ini_set('mssql.charset', 'UTF-8');

顺便说一句:更改立即生效,之后无需重新启动任何内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP FreeTDS 扩展从 MSSQL 服务器获取 UTF-8 字符集的数据 的相关文章

随机推荐