Martin Kuba wrote:

Pavel Rezny wrote:

Moc nechapu, proc chcete mit jednu stranku s ruznym kodovanim.
Bud pouzijte pro vsechno utf-8, to je nejlepsi, nebo
pokud potrebujete podporovat nejake strare prohlizece, kter utf-8 neumi
(jsou jeste takove?), tak v JSP strankach nespecifikujte kodovani vubec
a rozhodujte ho v nejakem filtru.



Napriklad proto, ze data v jiz existujici DB jsou kodovana nejak jinak nez UTF-8 a vyuzivana jeste nejakou jinou aplikaci, tak je zbytecne provadet za behu dalsi prekodovani.


To je naproste nepochopeni toho, jak prace se znaky v Jave funguje.
Vsechny znaky jsou v Jave vnitrne kodovany jako UTF-16, takze
pri nacteni dat z databaze k tomu prekodovani stejne dojde, at chcete
nebo nechcete. A pri generovani webove stranky (respektive response
od servletu) zase musi dojit k prekodovani z vnitrni reprezentace
na vystupni kodovani, ktere nema s kodovanim v nejake databazi
zhola nic spolecneho.
Cili to jak jsou data kodovana v nejake databazi nema zadny vliv
na to, v jakem kodovani budete produkovat webove stranky. Stejne
jako to nijak nesouvisi s kodovanim nejakeho textoveho souboru, ze ktereho byste znaky pripadne nacital. A to napriklad textoveho souboru se zdrojem JSP stranky. To muze byt prekvapive, ale je to logicke.

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). 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.

BTW: V JSF jsem zatim stale nenasel moznost definovat kodovani na urovni servletu (ve web.xml aplikace :-( Takze to zatim vypada na uvedeni kodovani v kazdem JSP a nebo rucnim nastavenim do response.

A pokud chci pouzit stejne stranky v jine aplikaci s jinym kodovanim, tak to nechci v kazde strance nahrazovat.

Tahle veta mne vede k temnemu podezreni, ze ceske znaky mate primo ve zdrojaku JSP stranky, a tudiz se budete za chvili divit, proc jsou misto
nich jenom otazniky, kdyz specifikujete vystupni kodovani stranky.
To proto, ze vstupni kodovani souboru se zdrojem JSP stranky
nesouvisi s vystupnim kodovanim servletu, do ktereho se JSP stranka prelozi.

Tim jsem minil, ze jsem nechtel nahrazovat retezec <%@ page contentType="text/html;charset=UTF-8" %>
   (Ve strance zadne texty nastesti nejsou.)

   PavelR

Odpovedet emailem