PHP ODBC get empty data with cyrillic encoded



I'm working on PHP project to get data from VerticaDB, I'm using a unixODBC driver ( I tried also iODBC), I have a problem with cyrillic encoded records, I'm always getting empty fields.


What I found as workaround is to encode the field in SQL query using URI_PERCENT_ENCODE function and in PHP I decode them, it works well for a while until the Vertica server crashes.


For testing I create a table with 3 same records:  name : 'ООО Корона Студио'


So when I do 


FROM mytable

in php I got this array:


array (size=3)
0 =>
array (size=2)
'name' => string '  ' (length=17)
'URI_PERCENT_ENCODE' => string '%D0%9E%D0%9E%D0%9E%20%D0%9A%D0%BE%D1%80%D0%BE%D0%BD%D0%B0%20%D0%A1%D1%82%D1%83%D0%B4%D0%B8%D0%BE' (length=96)
1 =>
array (size=2)
'name' => string '  ' (length=17)
'URI_PERCENT_ENCODE' => string '' (length=0)
2 =>
array (size=2)
'name' => string '  ' (length=17)
'URI_PERCENT_ENCODE' => string '' (length=0)
3 =>

it looks like a bug in URI_PERCENT_ENCODE function, but I would like to avoid using it and get the data encoded correctly.


I tried to change DriverManagerEncoding in /etc/vertica.ini from UTF-16 to UTF-8 or UTF-32 but nothing change.


this is my configs:

- Vertica Client version 7.2.3-0


- /etc/vertica.ini :


ODBCInstLib = /usr/lib/x86_64-linux-gnu/

- /etc/odbc.ini



Description = Vertica Dev
Driver = /opt/vertica/lib64/
Port = 5433
Driver = Vertica

- /etc/odbcinst.ini



Description = Vertica driver
Driver = /opt/vertica/lib64/



Thanks in advance !


Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file

Can't find what you're looking for? Search the Vertica Documentation, Knowledge Base, or Blog for more information.