Re: Cannot store special chars using c lib - Mailing list pgsql-general

From Alexander Reichstadt
Subject Re: Cannot store special chars using c lib
Date
Msg-id 797788FC-D06A-436D-8E1F-EF4A7BDC8985@mac.com
Whole thread Raw
In response to Re: Cannot store special chars using c lib  ("Albe Laurenz" <laurenz.albe@wien.gv.at>)
List pgsql-general
Thanks, Albe, I had checked this, too, and it was ok. I already posted the solution to the board. It was an error due
toan incorrect conversion between an object-instance and a char. It works now. 

Am 22.03.2012 um 12:50 schrieb Albe Laurenz:

> Alexander Reichstadt wrote:
>> I need to be able to store special chars, German Umlaute, in my tables. This works when using
>> pgPHPAdmin to store the same value to the same field. But when using the c-library it doesn't, fields
>> stored are garbled.
>>
>> I checked using \l to see what encoding the database is which is UTF8, UTF8 is what's required.
>>
>>                              List of databases
>>   Name    |  Owner   | Encoding | Collation | Ctype |   Access privileges
>> -----------+----------+----------+-----------+-------+-----------------------
>> MyDB   | postgres | UTF8     | C         | C     |
>> alltypes  | postgres | UTF8     | de_DE     | C     |
>> postgres  | postgres | UTF8     | C         | C     |
>> template0 | postgres | UTF8     | C         | C     | =c/postgres          +
>>           |          |          |           |       | postgres=CTc/postgres
>> template1 | postgres | UTF8     | C         | C     | =c/postgres          +
>>           |          |          |           |       | postgres=CTc/postgres
>>
>>
>> As a way to store things I use PGSQLKit, which in turn uses
>>
>> const char *cString = [sql cStringUsingEncoding:defaultEncoding];
>> if (cString == NULL)
>>
>> res = PQexec(pgconn, cString);
>>
>> to store things. The defaultEncoding I also changed explicitly from defaultEncoding to UTF8 to try,
>> but got the same result. As far as I can see this is not an error on part of the PGSQLKit.
>>
>>
>> From what I read there is no table specific encoding.
>>
>> The collation is set to C, but that's something only relevant to sorting as far s I understand.
>>
>> So, I am at a loss as to where things go wrong.
>>
>> Any ideas?
>
> I know nothing about PGSQLKit, but you should check what client_encoding is set to.
> If it is set to something else than UTF8, say for example LATIN1, then PostgreSQL
> will happily interpret the bytes in your UTF8 string as LATIN1 and convert them
> to UTF8, resulting in things like 'schöne ScheiÃ\u009Fe'.
>
> Yours,
> Laurenz Albe
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general


pgsql-general by date:

Previous
From: "Albe Laurenz"
Date:
Subject: Re: Cannot store special chars using c lib
Next
From: Arvind Singh
Date:
Subject: Help in Parsing PG log usings CSV format