Len na okraj. Sice MS SQL som nepouzival uz roky ale vsade kde som nahodou k tejto skratke prisiel ci uz na konfere, alebo inom clanku tak original dodavany MS SQL driver je jednak stary (asi aj nie je supportovany) a jednak ma problemy s datumami. Odporucil by som ti radsej pouzit http://jtds.sourceforge.net/
Roman Pavel Rezny said: > jj, to bude asi ten problem, ze se v connct stringu nic > nespecifikovalo a tudis nevim, jake kodovani driver predpokladal a > jestli byl schopen od serveru zjistit, v jakem kodovani je DB. > Jednalo se o MS SQL server s kodovanim win-1250 a JDBC driver od > Microsoftu. > Takze jeste pohledam timto smerem a ted uz by se melo podarit > premluvit ho na UTF-8 ;-) > > Jeste jednou dekuji za uzitecne rady. > > PavelR > > Martin Kuba wrote: > >> 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 > > >