0

我正在使用 PHP 函数 sybase_connect 连接到 mssql 数据库并检索数据,如下所示:

$mssql=sybase_connect($Host, $User, $Password, "cp1257");
$mssql->query("EXEC AuthLoginList");
while($mssql->get_row()){
  echo $mssql->f('id')." ".$mssql->f('name')." ".$mssql->f('surname')."<br>";
}

在此处输入图像描述

但是,错误地提取了国家符号。问卷出现在他们的位置: 在此处输入图像描述

数据库版本是 Microsoft SQL Server 2012 (SP4-GDR) (KB4583465) - 11.0.7507.2 (X64)

以下编码用于文本字段:

在此处输入图像描述

在此处输入图像描述

您使用什么编码并不重要。结果总是一样的。提供问号而不是国家符号。前任:

$mssql=sybase_connect($Host, $User, $Password, "cp1257");
$mssql=sybase_connect($Host, $User, $Password, "iso-8859-1");
$mssql=sybase_connect($Host, $User, $Password, "utf8");
$mssql=sybase_connect($Host, $User, $Password, "utf-8"); 
$mssql=sybase_connect($Host, $User, $Password, "iso_1");
$mssql=sybase_connect($Host, $User, $Password, "windows-1257");
$mssql=sybase_connect($Host, $User, $Password, "UNICODE");

也许有人可以就如何解决这个问题给我建议。

4

1 回答 1

0

看了很久TDS协议文档,找到了解决办法:

> export LANG lt_LT

通过这样设置环境变量LANG,我的环境中的MSSQL数据库得到了正确的编码ISO-8859-13。

在此处输入图像描述

于 2022-01-27T16:37:28.973 回答