Re: [ODBC] ODBC application works while libpq fails - Mailing list pgsql-odbc
From | Igor Korot |
---|---|
Subject | Re: [ODBC] ODBC application works while libpq fails |
Date | |
Msg-id | CA+FnnTwuNpZdpVV8TvB-NQzhfAxj32RnB1X6GDMuqdeF8pd5EQ@mail.gmail.com Whole thread Raw |
In response to | Re: [ODBC] ODBC application works while libpq fails ("Inoue, Hiroshi" <h-inoue@dream.email.ne.jp>) |
Responses |
Re: [ODBC] ODBC application works while libpq fails
|
List | pgsql-odbc |
HI, Hiroshi, On Fri, Aug 4, 2017 at 9:17 AM, Inoue, Hiroshi <h-inoue@dream.email.ne.jp> wrote: > 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? No I do not. Is it what ODBC driver does? Thank you. BTW, with ODBC the table name is successfully converted to be "abc<ALT+225>" (it's a greek letter "beta" or a symbol for a German "ss" sound.- ß). > > > regards, > Hiroshi Inoue >> >> >> Thank you. >> >>> Thank you. >>> >>>> regards, >>>> Hiroshi Inoue >>>> >>>>> Thank you. >>>>> >>>>> >>>>>> Thank you.
pgsql-odbc by date: