Subject Re: [firebird-support] Bug with character sets
Author Andreas Hesse
Brad Pepers schrieb:
> I'm using FirebirdCS 2.1.2 on SuSE 11.1 Linux and I create a database
> specifying the default character set to be UTF8. I then connect to
> the database and specify that I'll be using UTF8 for the connection.
> If I then select on any "char" type column, I get back a string that
> is 4 times the length it should be and blank padded.
>
> So for instance if I have a char(1) column and store 'Y' or 'N' in it
> and select on it, I get back 'Y ' or 'N '. The problem doesn't
> happen with varchar columns and if I change the character set used for
> the connection to ISO8859_1, then the problem goes away.
>
> I expect that if the database is UTF8 and I'm talking UTF8 to the
> server and I store 'Y' in a char(1) column, when I select from it I
> should get 'Y' back again!
>
> PS: this is all using the C fbclient library and I'm setting the
> connection character set using isc_dpb_lc_ctype in my connection
> parameters.
>
> --
> Brad
>

Yes, it is default behavior of fixed char columns to a db with
connection charset utf8.
One utf8 char is 1 to 4 bytes in firebird.
So the buffer for ascii chars is 4 times bigger as expected.

This behavior is discussed somewhere in the newsgroup.

The workarounds I've seen in the moment are, that the client libs trim
the resulting string for fixed char columns.

Andreas