我使用ODBC从使用PHP的Netezza数据库中读取数据。
系统:Red Hat Linux 7,Netezza ODBC驱动程序,unixODBC,已安装多个软件包的httpd。
数据库:IBM Netezza,数据存储为latin9(给出数据库配置,不能更改)。数据:
NAME
----
Frank
Fränk
当我用PHP从数据库中读取数据时,特殊字符被替换为问号(不是这些?在钻石中,这没关系)。 PHP代码:
$nz = odbc_connect('DRIVER={NetezzaSQL};SERVER=x.x.x.x;PORT=5480;DATABASE=database;','username','password');
$result = odbc_exec($nz, 'select * from CUSTOMERS');
while(odbc_fetch_row($result)) {
echo odbc_result($result, 'NAME').'<br>'.PHP_EOL;
}
结果:
Frank
Fr?nk
到目前为止我尝试了什么:
对我来说很清楚,ODBC驱动程序正在运行并返回一个latin9编码的字符串。 Linux系统上的PHP正在进行一些内部转换,用问号替换字符。任何想法我能做什么?
PS:这不是“UTF-8一直到”的复制品。首先,我无法更改数据库编码。其次,在连接字符串中指定charset没有帮助。第三,它是一个Netezza数据库,而不是MYSQL,我不能使用任何那些MYSQL函数,Netezza在设置方面有点奇怪。但是,我找到了从数据库中正确检索数据的方法,只是Linux上的PHP不起作用。