Encoding is not proper when query from Apache/PHP
I have some problem with connection to my Vertica. I use PHP and PDO ODBC driver (thrue unixODBC). When I connect to Vertica via isql and select records from table all data are fine encoded - fields with UTF-8 (non ASCII symbols, for example cyrillic) correctly prints. If connect from web with PHP script and execute same query that fields has some unicode characters like this \u001A\u001A\u001A\u001A Each \u001A represent a one non ASCII symbol and can't be printed. I found that this problem occurs only when you run a script from the web (web server is Apache2). So if you run the script from the console, it's OK. But if you do it from localhost/test.php, we get the issue. It occurs on x32 and x64 versions of Vertica client drivers for Linux and Windows. How does the Apache can influence the outcome results that we get from Vertica?
0
Comments
As it turns out, there's a file in /etc/Apache2 called envvars. In the middle of it, we found this:
## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale
I remembered reading in the docs that LANG=C tends to garble characters with Vertica, so all we did was swap the comments like this:
## The locale used by some modules like mod_dav
#export LANG=C
## Uncomment the following line to use the system default locale instead:
. /etc/default/locale