【问题标题】:Encoding problem when connecting to SQL Server database via odbc_connect()通过 odbc_connect() 连接到 SQL Server 数据库时出现编码问题
【发布时间】:2020-12-31 21:46:44
【问题描述】:

首先,我没有选择在我的主机上使用最新的 SQLSRV 驱动程序,所以我被 odbc 连接卡住了。

$connection_string = 'DRIVER={SQL Server};SERVER=111.111.111.111;DATABASE=MY_DATABASE';
$user = 'name';
$pass = 'pass';
$connection = odbc_connect( $connection_string, $user, $pass, SQL_CUR_USE_ODBC );

该数据库的排序规则是Slovak_CI_AI。如果我将我的 PHP 标头设置为 utf-8,输出数据看起来很乱,编码错误。

如果我将“Slovak_CI_AI”作为字符集添加到我的 PHP 标头,数据显示正常,但这可能是不行的,因为我需要在 WordPress 中处理这些数据,如果它们包含特殊/则无法处理它们非英文字符(这些字符串在 WP 看来是损坏的)。

我用 mb_convert_encoding、iconv 或 utf8_decode 尝试了许多转换,但没有成功。 WordPress 使用 utf-8。

我找不到任何解决方案。

更新:我尝试将CHARSET=UTF8 添加到我的 odbc 连接字符串中,但没有成功。我还发现数据库中文本的字符集是 cp1250。我尝试将 cp1250 设置为我的 PHP 标头的字符集,输出很好,但是一旦遇到特殊字符,WordPress 仍然会失败。我尝试使用 iconv 将这些字符串从 cp1250 转换为 utf-8,但也没有运气 - 字符串的输出编码错误,WordPress 也失败了。

【问题讨论】:

    标签: php sql-server encoding utf-8


    【解决方案1】:

    对我来说,整个编码过程仍然很混乱,但我还是设法做到了。它适用于:

    • odbc 连接字符串包含charset=cp1250
    • PHP 标头字符集设置为utf-8
    • 我使用iconv 将所有有问题的字符串从cp1250 转换为utf-8

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2014-09-26
      • 2021-06-18
      • 1970-01-01
      相关资源
      最近更新 更多