带有OBDC连接的PHP查询返回带有无法识别符号的字符串

时间:2018-11-01 12:19:06

标签: php odbc

我正在使用ODBC连接来访问SQL Server数据库并从中获取字符串。问题是我在字符串中得到?个符号,例如应该是ē

这是我正在使用的代码:

if(($result = odbc_exec($connect, $sql)) !== false) {
   while( $obj = odbc_fetch_object( $result )) {
      if ($obj->PLK_STATUSS == '10') {
            echo $obj->DESCRIPTION;
       }
    }
}

它应该回显Piemērs,但我得到的是Piem?rs

我放了

<meta http-equiv="content-type" content="text/html; charset=utf-8"</meta> 

在头上。我也尝试过

echo utf8_decode($obj->DESCRIPTION);

没有运气。

还有什么问题?我没有php经验,所以可能很简单。

编辑: 如果我只是echo "Piemērs";,那就行了。

编辑: 我正在使用FreeTDS创建ODBC连接。我的猜测是ODBC配置有问题。从其他来源我发现在freetds.conf文件中应该有一行

client charset = UTF-8

但是,当我添加此行时,网页停止工作,并且在浏览器中显示ERR_EMPTY_RESPONSE

2 个答案:

答案 0 :(得分:1)

我设法解决了从ODBC更改为PDO的问题。

$conn = new PDO('dblib:charset=UTF-8;host='.Configure::read('SERVERNAME').';dbname='.Configure::read('DB'),
            Configure::read('USERNAME'),
            Configure::read('PASSWORD')
        );

答案 1 :(得分:1)

问题可能是由于php版本较新。 ODBC在php5中工作时也有同样的问题,但升级到php7时必须将其更改为PDO。