Valentina 2.0. -- What is your 3 DREAM features?

Eric Forget forgete at cafederic.com
Sat Jan 31 02:18:26 CST 2004


>>> We will use UTF16 as native encoding.
>> 
>> But we can store the data as UTF-8, right (to keep the size of our
>> db's down)? It will be converted to and from UTF-16 by Valentina for
>> calculations/sorts/etc. on-the-fly, correct?
> 
> I still not sure, Jon.
> 
> Once I have see some problem with UTF8 storage.
> Do not remember now which one.
> 
> When I come to String-based indexes, we will think again on this.
> 
> Yes, dream is to store as UTD8 or some other single byte encoding,
> IF developer have told this.

If I may add my grain of salt on this, I will go further: let the user of
the database (us) choose. It could be for the whole database, i.e. not
necessarily at field level. But as always the more flexibility the better...

Here's why:

    UTF-8 takes 1 to 4 bytes
    UTF-16 takes 2 to 4 bytes
    UTF-32 takes 4 bytes

Now imagine that you have a field where you allow the user to enter up to 64
characters. Quiz: How much space you have to keep for the field in the
database for each of the 3 encodings?

    Encoding            For Americans       For International
    --------            -------------       -----------------

     UTF-8                  64                  256
     UTF-16                 128                 256
     UTF-32                 256                 256

So, as we can see, as soon as we develop a software for international, we
need to keep 4 bytes per character anyway. The only difference will be where
the blanks are put: at the end or in the middle of the string.

However, for all comparisons UTF-32 will be faster since there is no
conversion of the characters to be done. UTF-8 4 bytes character is more
costly for comparisons than UTF-16 4 bytes character which is also more
costly than UTF-32. Unfortunately, most of the Unicode implementations
support only UTF-8 and UTF-16.

So, for today the ideal is to use UTF-8 for Americans (or French, etc.) and
use UTF-16 everywhere else. Once, implementations will be added for UTF-32,
it will become useful to switch to it. UTF-32 is the only native encoding.
It has once been UTF-16 but it changed lately...

Since it is a new code base, why not start going with the flexibility...

Eric


___________________________________________________________________

 Eric Forget                       Cafederic
 ForgetE at cafederic.com             <http://www.cafederic.com/>

 Fingerprint <86D5 38F5 E1FD 5D9C 71C3  BAA3 797E 70A4 6210 C684>




More information about the Valentina mailing list