我一直有一些麻烦搞清楚,以处理PHP UTF8字符的最佳方式。 我能UTF8数据(中国字符)加载到Vertica的蛮好的,使用JDBC客户端时,可以在那里看到他们,所以我知道数据被正确记录。
然而,当我通过PHP查询,包含UTF8字符的字符串来通过为空值。 不过,我可以不喜欢包裹UTF8场在URI_PERCENT_ENCODE功能,然后做一个urldecode在PHP中的数据,从而正确输出的字符。
有没有可以推荐给更多的妥善处理UTF8任何ODBC驱动程序的设置,或PHP设置?
我们正在运行PHP 5.3,64位。
不管它的价值,与Vertica的64位ODBC适用于Windows的工作,并呼吁SQLDescribeColW来形容与中国名字和中国列名的表时(即描述了像SQL语句“SELECT * FROM MYTABLE”),名称返回的编码“时髦UTF-8”。
的“时髦UTF-8”或FUTF-8编码使用wchar_t的[](在Windows上它是16位值的阵列),其中在阵列中的每个条目,有一个单一的实UTF-8字节。
例如,如果列名是“时髦”,其UTF-16编码是65f6h,9ae6h(两个字符,每个16位)和它的UTF-8编码是E6H,97H,B6H,E9H,ABH,A6H(两个字符,各3个字节),则在FUTF-8你会得到:00e6h,0097h,00b6h,00e9h,00abh,00a6h(6个字符,每个16位)。
我想,这是什么样放入空的PHP。 我把它叫做ODBC驱动程序的bug。