From what I understand, in recent versions of Windows you can enable UTF8 Win32 API support. Then the ODBC “A” (not “W”) calls will work with UTF8. The conversion, if needed, happens in the driver manager or in the OS. On MacOS and Linux I believe you can already use the “A” calls to do this.
From: Dave Cramer <davecramer@postgres.rocks> Date: Tuesday, August 13, 2024 at 2:41PM To: Abhishek Kumar <abhishek.aak0@gmail.com>, PostgreSQL mailing lists <pgsql-odbc@postgresql.org> Subject: Re: Need a way to configure encoding
Hi Abhishek,
Unfortunately, no not without considerable work in the driver.
Yes. I am indeed using the Unicode version of the driver. I am constrained to use it. Is there a possibility where we can configure something to get SQL_VARCHAR instead of SQL_WVARCHAR for varchar column in the UNICODE driver?
Regards,
Abhishek Kumar
On Tue, 13 Aug 2024 at 4:10PM, Dave Cramer <davecramer@postgres.rocks> wrote:
Greetings,
I think you are using the unicode version of the driver. If you use the non-unicode version it will use the locale settings and strings will be returned as SQL_VARCHAR.
I am working on a linux ODBC C++ application and using psqlodbc driver. I need help on the below few questions.
1. Is there a way in which we can make the psqlodbc code work according to the client encoding?
For example, if my application encoding is UTF-8, i would want the types and strings returned to my application in UTF-8. I think by default, it is returning UTF-16 strings.
2. The default behaviour of the driver is when we have a VARCHAR column in a table, it returns SQL_WVARCHAR as the type. Is there a possibility where we can configure something (maybe at connection string), such that it returns SQL_VARCHAR for VARCHAR column and not SQL_WVARCHAR ?