Kodovani a JSF?

Martin Kuba makub na ics.muni.cz
Středa Leden 4 10:41:41 CET 2006


Pavel Rezny wrote:
>    Pro pristup do DB pouzivame Hibernate a pokud byla DB win-1250 a 
> stranka byla win-1250 bylo vse spravne, ale pokud byla stranka v 
> html-head-meta oznacena jako UTF-8 nebylo kodovani spravne, i kdyz v 
> Tapestry 3 (http://jakarta.apache.org/tapestry/) bylo vse nastaveno na 
> UTF-8 (jeste nebylo pouzivano JSF).

To vypada, ze data z databaze byla nactena sice jako windows-1250
bajty, ale s deklaraci iso-8859-1, takze ve vnitrnim ulozeni javy
to byl nejaky nesmysl. Nicmene kdyz se na vystup daly jako iso-8859-1
(default kodovani ze servletu) a v HTML META tagu se to oznacilo
jako windows-1250, provedl browser druhy spatny preklad, ktery ale 
vyrusil tu prvni chybu, takze se to zobrazilo dobre.
Naopak spravne nastaveni kodovani na utf-8 situaci opticky zhorsilo.

Takze problem bude v nastaveni databaze. Co pouzivate ?
Vidim to tak, ze JDBC driver je natolik hloupy, ze se nezepta
serveru na spravne kodovani, a zaroven mu nebylo spravne kodovani
rucne nastaveno. To dela treba MySQL, ale nejspis i jine databaze.

> Takze jeste proverim, jak jsou opravdu predavana data z Hibernate a 
> jestli by tedy bylo mozne nastavit kodovou stranku vzdy na UTF-8 bez 
> ohledu na to, jak jsou ulozena data v DB.
> Ano vnitrni reprezentaci Stringu v Jave chapu presne tak, jak jste 
> popsal vyse, a samozrejme pokud se pouziji nastroje javy pro nacitani z 
> DB/souboru, tak se vzdy uvadi v jakem kodovani je zdroj. Ale protoze 
> jsem si nebyl vubec jisty, jak data dostavam z DB a mel jsem predchozi 
> spatnou zkusenost, tak jsem nechtel omezit stranky pouze na UTF-8. Ale 
> pokud to nebude pusobit zadny problem, budu jedine rad, kdyz budou 
> stranky vzdy v UTF-8.

Spravne nacteni dat z databaze je odpovednosti JDBC driveru,
musite se podivat do jeho dokumentace. Kdyz bude nejhur,
muzete spatne nacteny String opravit takhle:

String dobre = new String(spatne.getBytes("spatne kodovani"),"spravne 
kodovani");

ale treba u MySQL staci do JDBC URL dat 
?useUnicode=true&characterEncoding=windows-1250

samozrejme za predpokladu, ze server pouziva windows-1250,
a pak vsechno funguje jako po masle.

Makub
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: makub na ics.muni.cz
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------
------------- další část ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2819 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://amaio.cz/pipermail/konference/attachments/20060104/e832a26b/attachment.bin>


Další informace o konferenci Konference