Php SQL Server:“仅Unicode排序规则中的Unicode数据或ntext数据…”问题,但无法更改FreeTDS版本

Php SQL Server:“仅Unicode排序规则中的Unicode数据或ntext数据…”问题,但无法更改FreeTDS版本,php,sql-server,unicode,Php,Sql Server,Unicode,在尝试使用PHP从SQL Server数据库中选择nvarchar类型的列时,我遇到了一个熟悉的问题: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. 我知道我可以使用SELECT CASTcolumnName as TEXT as columnName

在尝试使用PHP从SQL Server数据库中选择nvarchar类型的列时,我遇到了一个熟悉的问题:

Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.
我知道我可以使用SELECT CASTcolumnName as TEXT as columnName FORM tableName解决这个问题。。。但这很烦人。此外,只要出现此错误,Plus就无法工作,而且我无法将Adminer配置为强制转换其列名

在和中,许多人提到可以通过更改文件/etc/freetds.conf/来解决这个问题。。。但我在Windows上,不是*nix,所以不存在这样的文件。我联系了我的托管公司的支持人员以确认这一点

有没有什么方法可以让我选择nvarchar列而不必每次都添加烦人乏味的CAST样板文件?为了让管理员工作

或者是切换到DB Library之外的其他驱动程序的唯一选项?

Windows解决方案:- 您可以始终使用Windows驱动程序连接到Mssql数据库。Windows的本机驱动程序是可用的,并且不难安装。如果需要的话,我可以发送

当你的机器是基于Linux的时候,我有一个连接到mssql的解决方案,我特别要说的是Centos。 我犯的错误是没有配置位于/etc/FreeTds.conf中的FreeTds 在Ubuntu系统的情况下,它不会出现在这里

勾选表示典型windows系统配置该部分的行 请在下面的一页中勾选

[connectionname]
host = **nameOrIpofTheServer**
port = 1433
tds version = 8.0
client charset = utf-8
在代码中使用连接名称。 注意:如果希望这些设置正常工作,请使用连接名称 PDO的连接对象将如下所示:-

$dbh = new PDO ("dblib:host=**$hostname**:$port;dbname=$dbname","$username","$pw"); // 
总一

$dbh = new PDO ("dblib:host='**connectionname**':$port;dbname=$dbname","$username","$pw");
//具有连接名称的实际连接 现在尝试从mssql数据库中选择具有UTF-8字符的数据。 我会工作的

在此环境中工作时,您将面临的下一个问题是:- 将UTF-8字符保存到数据库。 一个简单但复杂的解决方案是,您必须在数据库查询前面加上前缀N,以便为字段赋值。 例如:-更新[users]设置[Address]=N'ббббббббб其中[ID]=1;
这里的地址是UTF-8字段。比如NTEXT、NCHAR和NVARCHAR。

你解决了这个问题吗?我也有同样的问题,这个项目最终被放弃了。。。我一辈子都记不起我是否解决了这个问题。