Re: [ODBC] ODBC application works while libpq fails - Mailing list pgsql-odbc
From | Inoue, Hiroshi |
---|---|
Subject | Re: [ODBC] ODBC application works while libpq fails |
Date | |
Msg-id | 9ec4e199-fd89-5935-b091-648eadb2f983@dream.email.ne.jp Whole thread Raw |
In response to | Re: [ODBC] ODBC application works while libpq fails (Igor Korot <ikorot01@gmail.com>) |
Responses |
Re: [ODBC] ODBC application works while libpq fails
|
List | pgsql-odbc |
Hi Igor, On 2017/08/04 20:59, Igor Korot wrote: > Hi, Hiroshi, > > On Thu, Aug 3, 2017 at 12:06 AM, Igor Korot <ikorot01@gmail.com> wrote: >> Hi, Hiroshi, >> >> On Wed, Aug 2, 2017 at 12:32 AM, Inoue, Hiroshi >> <h-inoue@dream.email.ne.jp> wrote: >>> Hi Igor, >>> >>> >>> On 2017/08/02 12:40, Igor Korot wrote: >>>> Hi, >>>> >>>> On Mon, Jul 31, 2017 at 9:05 AM, Igor Korot <ikorot01@gmail.com> wrote: >>>>> Hi, >>>>> I have a very weird situation. >>>>> >>>>> I am trying to develop an application which will connect to the >>>>> PostgreSQL >>>>> server thru 2 different methods: thru the ODBC and using libpq. >>>>> >>>>> Environment: >>>>> MacOSX 10.8. >>>>> Xcode 4 (latest available for 10.8) >>>>> PostgreSQL 9.1 - original from OSX. >>>>> Application is compiled with the UNICODE >>>>> iODBC DM for OSX 10.8. >>>>> Both application and DB server running on the same machine. >>>>> The database I'm using was created with the default parameters (just >>>>> CREATE DATABASE draft). >>>>> >>>>> When I connect with the ODBC driver, the application works as expected >>>>> - no errors or problems. >>>>> >>>>> However when I tried to run the application with libpq I received an >>>>> error. The error is: >>>>> >>>>> [quote] >>>>> Invalid byte sequence for encoding UTF-8 0xc3\n >>>>> [/quote] >>>>> >>>>> The application is written in C++ (not ObjC++). >>>>> The table I am trying to query contains the field with the word >>>>> "abc+<ALT225>", which inside the database is translated as >>>>> "abc\xc3\x9f". >>>>> >>>>> What could be the reason for such behavior? >>>>> >>>>> Is ODBC driver sets the client encoding to some uniform value? >>>>> Or there something else? >>>> Here is the content of my .odbc.ini for PostgreSQL on Mac: >>>> >>>> [code] >>>> [postgre] >>>> Driver = PostgreSQL Unicode Driver >>>> host = localhost >>>> ServerName = localhost >>>> SERVER = localhost >>>> PORT = 5432 >>>> UserName = postgres >>>> Password = <my_passwd> >>>> Database = draft >>>> UseServerSidePrepare = 1 >>>> [/code] >>>> >>>> As you can see there is no special encoding settings. So it uses one >>>> that is set by default. >>>> But using ODBC API works and trying libpq - doesn't. >>>> >>>> Could someone please help? >>> >>> What is a query which causes a failure? >>> What is a result of locale command? >> Sorry for the noise. >> I think I found the culprit and in the process of fixing it. >> >> I will let you know how it goes. > Apparently I didn't fix it yet. > > So here is information requested: > > MyMac:dbhandler igorkorot$ locale > LANG="en_US.UTF-8" > LC_COLLATE="en_US.UTF-8" > LC_CTYPE="en_US.UTF-8" > LC_MESSAGES="en_US.UTF-8" > LC_MONETARY="en_US.UTF-8" > LC_NUMERIC="en_US.UTF-8" > LC_TIME="en_US.UTF-8" > LC_ALL= > > And the failing query is: > > SELECT * FROM \"abcatcol\" WHERE \"abc_tnam\" = $1 AND \"abc_ownr\" = > $2 AND \"abc_cnam\" = $3; > > First parameter is "public.abc\xc3\x9f", second - "public" and third - "id". > > The error is "Invalid key sequence for UTF-8". Do you call setlocale(LC_ALL, "") first? regards, Hiroshi Inoue > > Thank you. > >> Thank you. >> >>> regards, >>> Hiroshi Inoue >>> >>>> Thank you. >>>> >>>> >>>>> Thank you.
pgsql-odbc by date: