Subject Appropriate uses of COLLATE and CHARSETs...?
Author Rasmus Olesen
Hi and thx again to Alexandre for his most useful and clear answer
on my previous question on indicies(Msg 44148)

I'm now cleaning up my existings FB DBs and realized that i had no
clue which CHARSET/COLLATEtion i used, and

select * from RDB$DATABASE

..in the diffrent databases showed me all 'NONE' in the CHARSET
FIELD, aka. the COLLATE default was also 'NONE'.

Now I fiddled with some of the CHARSETS(mostly ISO8859_1 and
WIN1252) due to the fact that most my DBs are MSSQL ports on Windows
and the test/deploy servers for now still runs Windows.
And I also tried out some of the COLLATE'tion orders, but they seem
to all restrict me from inserting Danish and French letters in my
varchar fields, fx.

So : With NONE/NONE everything works fine, but ISO8859_1/
(DA_DA/FR_CA/ISO8859_1(default)) and likewise with WIN1252/WIN1252,
i lost
the ability to insert a Danish-character string of legal size into a
varchar field. More specific, this error msg came up :
---------------
ISC ERROR CODE:335544321

ISC ERROR MESSAGE:
arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets
---------------
(I got this error msg through Marathon 3, but i don't think it
matters here.)

...and the big Question is :

Why do i get the errormsg ? (I suspect the connection doesn't
connect using the correct charset, but i couldn't prove/disprove it
by trying, i got the same results)

When and how should one use these COLLATE orders and specify
CHARSETs, beyond defaulting to NONE ?

Is it correct to assume that COLLATEs are just there to sort strings
in the right order(acc. to the collation) ?

Reading the IB6 docs, LANGREF.pdf, chap8, p.282, one could also get
the impression that specifing a diffrent CHARSET is just there to
allow backward compatibility( and therefore implicitly shouldn't be
used for new db's)...is it so ?


tia.
/Rasmus