编码是不恰当时从阿帕奇/ PHP查询(Encoding is not proper when que

2019-10-29 12:24发布

我有一些问题,连接到我的Vertica的。
我使用PHP和PDO ODBC驱动程序(thrue的unixODBC)。
当我通过ISQL连接至Vertica的,然后从表中记录的所有数据都很好编码 - 使用UTF-8字段(非ASCII符号,例如西里尔字母)正确打印。
如果从网络与PHP脚本连接并执行该领域有一些Unicode字符,这样\ u001A \ u001A \ u001A \ u001A相同的查询
每个\ u001A表示一个非ASCII符号和不能打印。

我发现,只有当您从网络脚本(Web服务器的Apache2)出现此问题。
所以,如果你从控制台运行脚本,它的确定。
但是,如果你从本地主机/ test.php的做到这一点,我们得到的问题。
它发生在Linux和Windows客户端Vertica的驱动程序的X32和x64版本。
如何在Apache可以影响结果的结果,我们从Vertica的获得?

Answer 1:

请确保您有DriverManagerEncoding=UTF-16vertica.ini文件。 当然,也许你需要尝试不同的值( UTF-8UTF-32可能),但对我来说,这只是一起工作UTF-16 。 这似乎是完全独立的编码是什么您的客户端使用的。 我想了unixODBC做某种转换的内部,和Vertica的驱动程序有可能产生的任何编码驱动程序管理器期待。



Answer 2:

需要添加的区域直接设置为PHP代码,一切都开始工作

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


文章来源: Encoding is not proper when query from Apache/PHP