Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Apache/PHP查询时,编码不正确_Php_Apache_Odbc_Unixodbc_Vertica - Fatal编程技术网

从Apache/PHP查询时,编码不正确

从Apache/PHP查询时,编码不正确,php,apache,odbc,unixodbc,vertica,Php,Apache,Odbc,Unixodbc,Vertica,我的Vertica连接有问题。 我使用PHP和PDO ODBC驱动程序(通过unixODBC)。 当我通过isql连接到Vertica并从表中选择记录时,所有数据都经过精细编码-带有UTF-8(非ASCII符号,例如西里尔字母)的字段正确打印。 如果使用PHP脚本从web连接并执行相同的查询,则字段中有一些unicode字符,如\u001A\u001A\u001A\u001A 每个\u001A代表一个非ASCII符号,无法打印 我发现只有在从web运行脚本时才会出现此问题(web服务器是Apac

我的Vertica连接有问题。
我使用PHP和PDO ODBC驱动程序(通过unixODBC)。
当我通过isql连接到Vertica并从表中选择记录时,所有数据都经过精细编码-带有UTF-8(非ASCII符号,例如西里尔字母)的字段正确打印。
如果使用PHP脚本从web连接并执行相同的查询,则字段中有一些unicode字符,如\u001A\u001A\u001A\u001A
每个\u001A代表一个非ASCII符号,无法打印

我发现只有在从web运行脚本时才会出现此问题(web服务器是Apache2)。
因此,如果您从控制台运行脚本,就可以了。
但是如果您从localhost/test.php执行此操作,我们就会遇到问题。
它出现在适用于Linux和Windows的x32和x64版本的Vertica客户端驱动程序上。

Apache如何影响我们从Vertica获得的结果?

确保您的
Vertica.ini
文件中有
driverManager编码=UTF-16
。当然,您可能需要尝试不同的值(
UTF-8
UTF-32
可能),但对我来说,它只适用于
UTF-16
。它似乎完全独立于客户端使用的编码。我认为unixODBC在内部进行了某种转换,Vertica驱动程序必须生成驱动程序管理器所期望的任何编码。

需要直接向PHP代码中添加语言环境设置,一切都开始工作

setlocale(LC_ALL, 'en_US.UTF-8');

这肯定比我的工资级别高。我强烈建议让Vertica参与进来。这听起来像是驱动程序中的一个bug,需要对其进行一些调试。对于这个网站来说,这不是一个很好的答案,但这正是我在《匆匆忙忙》之后要做的。我尝试了DriverManager编码的所有编码-没有结果。您可以从web上选择系统上带有非ASCII符号的Vertica数据?(Apache/PHP)