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 oznacilojako 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: [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