Portál AbcLinuxu, 1. května 2025 01:24

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
DjAARA avatar 5.1.2007 10:51 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Jetty 6 a problémy s kódováním Latin2 ve formulářích
Odpovědět | Sbalit | Link | Blokovat | Admin
Nepomohlo by někde na začátek zpracování (dřív než cokoliv z požadavku přečteš) dát něco jako:

req.setCharacterEncoding("iso-8859-2");
DjAARA's blog
DjAARA avatar 5.1.2007 11:00 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Jetty 6 a problémy s kódováním Latin2 ve formulářích
Aha, tak jsem koukl do zdrojáků a tam to tak máš…
5.1.2007 11:03 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: Jetty 6 a problémy s kódováním Latin2 ve formulářích
To je prave to, co jsem testoval a v jetty 6 nefunguje, pokud je HTML stranka s formularem v kodovani Latin2.
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
5.1.2007 11:17 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jetty 6 a problémy s kódováním Latin2 ve formulářích
Odpovědět | Sbalit | Link | Blokovat | Admin
Aby to fungovalo v Jetty 6.1, je nutné nastavit QueryEncoding (je to rozčíření Jetty), RequestCharacterEncoding se u GETu vůbec nebere v úvahu. S následujícíém nastavením mi funguje testLatin2:
import org.mortbay.jetty.Request;
...
    protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        if (requestEncoding != null)
          request.setCharacterEncoding(requestEncoding);
    	(Request)request).setQueryEncoding("iso-8859-2");

        String tmp = request.getParameter("note");
        String tmp1 = new String(tmp.getBytes("ISO-8859-1")); // this is correct for request locale cs
        String tmp2 = new String(tmp.getBytes("ISO-8859-2"));
        String tmp3 = new String(tmp.getBytes("UTF-8"));

        response.setContentType("text/html; charset=ISO-8859-2");
        Writer w = response.getWriter();
        ...
5.1.2007 11:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jetty 6 a problémy s kódováním Latin2 ve formulářích
Ještě doplním - v Jetty 6.0 to fungovat nebude, tam je natvrdo UTF-8 - změna je v metodě decodeQueryTo třídy org.mortbay.jetty.HttpURI, musí tam být
public void decodeQueryTo(MultiMap parameters, String encoding) 
        throws UnsupportedEncodingException
    {
        if (_query==_fragment)
            return;
       
        if (encoding==null)
            encoding=URIUtil.__CHARSET;
        
        if (StringUtil.isUTF8(encoding))
            UrlEncoded.decodeUtf8To(_raw,_query+1,_fragment-_query-1,parameters);
        else
            UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,encoding),parameters,encoding);
    }

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.