gpt4 book ai didi

php - PDO_ODBC 的字符编码问题

转载 作者:可可西里 更新时间:2023-11-01 12:54:50 25 4
gpt4 key购买 nike

当使用 PDO_ODBC 和以下代码从 PHP 访问 Microsoft SQL 数据库时,我遇到了编码问题。输出时,数据库中的文本是乱码。

$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=UTF-8";
$pdo = new PDO($dsn,$username,$password);
$sql = "SELECT text FROM atable";
$result = $PDO->query($sql);
while($data = $result->fetchObject()){
$values[] = $data->text;
}
dpm($values);

garbled output
(来源:bayimg.com)

这是从 Drupal 模块完成的。 Drupal 中的所有内容都适用于 UTF-8。最简洁的解决方案是能够以 UTF-8 格式从数据库中检索数据,或者在输出之前将其转换为 UTF-8。

我试过这些都没有成功

  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;client_charset=utf-8"
  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=utf-8"
  • $pdo->exec('SET NAMES utf8')new PDO(...)
  • 之后
  • $pdo->exec('SET CHARACTER SET utf8');new PDO(...)
  • 之后

PS:代码目前是在 Windows 上开发的,但它也必须在 GNU/Linux 上运行。

最佳答案

在 Linux 上运行并使用 FreeTDS 驱动程序时,可以使用 freetds.conf 中的 client charset 设置为客户端配置字符集。文件。为了在使用 PDO ODBC 和 unixODBC 时使用 freetds.conf 文件,需要使用 ODBC-combined configuration 配置 ODBC 数据源。 .当ODBC-only configuration用于配置 ODBC 数据源,不使用文件 freetds.conf。有了这个,我就能够从 MS SQL Server 数据库中检索和插入 UTF-8 数据。

作为一名 Linux/Unix 用户,我无法理解/找到一种方法来配置在 Windows 上使用 PDO ODBC 时使用的字符集。我模糊的理解是,当在系统级别配置时,ODBC 数据源可以配置为使用 de SQL Server 数据库的字符集或转换为客户端计算机的字符集。

关于php - PDO_ODBC 的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com