Subject | Re: [firebird-support] Re: Changing Charset only Pumping ? |
---|---|
Author | Mark Rotteveel |
Post date | 2012-11-16T15:08:12Z |
On 16-11-2012 15:59, patrick_marten wrote:
(VAR)CHAR(100) will accept 100 bytes worth of characters. For UTF-8 it
would then mean it will accepts up to 25 characters (I think that isn't
entirely true, as UTF-8 is 1 to 4 bytes per characters, so you might be
able to store more if you also use connection characterset NONE and send
the data as UTF-8).
Now if the default characterset is UTF-8 (or if the column itself is
UTF-8), then (VAR)CHAR(100) will accept 100 characters, but it will
store up to 400 bytes of data.
Mark
--
Mark Rotteveel
> Hello,If you are talking about a database with characterset NONE, then a
>
>> no, only pump. unicode uses up to 4 bytes per character.
>> Charset NONE uses only 1 byte per character.
>> So, field char/varchar(20) can store 20 characters for NONE,
>> and from 20 to 5 characters for UTF8, depending on how much bytes
>> each character have.
>> Thus, you may need to increase your character fields size.
>
> Is that really the case?
> Shouldn't the length remain the same and "just" the size of the database become larger?
(VAR)CHAR(100) will accept 100 bytes worth of characters. For UTF-8 it
would then mean it will accepts up to 25 characters (I think that isn't
entirely true, as UTF-8 is 1 to 4 bytes per characters, so you might be
able to store more if you also use connection characterset NONE and send
the data as UTF-8).
Now if the default characterset is UTF-8 (or if the column itself is
UTF-8), then (VAR)CHAR(100) will accept 100 characters, but it will
store up to 400 bytes of data.
Mark
--
Mark Rotteveel