Karel Nagy wrote:
Dobry den,resim problem s nasi aplikaci v Jave a s databazi (konkretne Firebird(verze 1.5.2 a 2.0RC1) a s ukladanim a zobrazovanim textu v ruznych znakovych sadach. Jedna se o jednoduchou GUI aplikaci, ktera umoznuje uzivateli pouze vkladata zobrazovat texty do/z databaze. Myslim, ze Java nativne pracuje s texty v UTF. Databazi jsem vytvoril v ISO 8859-2 (to je defaultni kodovani). Tabulka pro texty ma ale nastaveny sloupec TEXT jako UTF8. K databazi se pres driver pripojuji v kodovani ISO8859-2. Pokud vkladam ceske, nemecke nebo polske znaky, tak vse funguje. Ale pokud se pokusim vlozit ruske znaky, tak mne to vzdy zobrazi ctverecky. S vice-znakovymi databazema v Jave nemam zkusenosti a tak nevim, jestli chyby delam na strane Javy nebo databaze. Nemate nekdo radu nebo odkazy na clanky k tomuto tematu?
Nepovedlo se mi najít jak hledat v archivu konference na java.cz, takže to napíšu znovu. Java jede vnitřně v UTF-16, ale to je víceméně jedno, protože konverzi mezi Stringy a databází má za povinnost JDBC ovladač. Zobrazování v GUI je na tom zcela nezávislé. Taky jsou nezávislá všechna další rozhraní mezi Javou a vnějším světem, jako zápis a čtení souborů, zpracování HTTP požadavků, generování e-mailů atd. Takže v tomto konkrétním případě musíte zajistit, aby JDBC ovladač věděl, jak je nastavena databáze, a v Javě samotné nic řešit nemusíte. Neznám Firebird, takže v tomhle neporadím. U PostgreSQL a Oracle se JDBC ovladač s databází sám domluví, u MySQL se mu musí ručně kódování databáze prozradit. Krátké zagůglování odhalilo na http://www.firebirdsql.org/index.php?op=devel&sub=jdbc text:Previously the driver used the default JVM encoding to convert bytes into strings. Now you can enforce the encoding you like and do not need to depend on the regional settings of the host OS.
Vypadá to, že JDBC ovladač pro Firebird je stejný tupan jako u MySQL, a musíte mu ručně nastavit (jednotné!) kódování pro převod. Takže celou databázi udělejte v utf-8. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
