【问题标题】:Problem with national characters using the PHP function sybase_connect使用 PHP 函数 sybase_connect 的国家字符问题
【发布时间】:2022-01-21 17:57:10
【问题描述】:

我正在使用 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");

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

【问题讨论】:

  • 很好奇为什么要使用 sybase 库连接到 SQL Server,您是否尝试过使用现代 SQL Server 库? PHP 文件本身是存储为 UTF-8 还是 ...? default_charset 设置是什么?你为什么用一些拉脱维亚语和一些立陶宛语?
  • 我认为你可以使用 PDO 连接到 mssql
  • 您可能可以使用 PDO,@Jerson,但是您可以只使用 Microsoft Drivers for PHP for SQL Server。

标签: php sql-server charset


【解决方案1】:

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

> export LANG lt_LT

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

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 2022-06-15
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-12-26
    相关资源
    最近更新 更多