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 | 7d92fcc2-0562-61e3-b236-83c93eb6b852@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 22:22, Igor Korot wrote: > 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? Yes. Unless setlocale() is called, "C" locale is selected. regards, Hiroshi Inoue > 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: