Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Tomas 08. 05. 2010, 14:49:43
-
Zdravim,
potrebuji v Jave napsat kod ktery pres HTTP odesle POST. V postu jsou textove informace s diakritikou. Script ktery prijima formular miva kodovani UTF-8 nebo ISO 8859-2.
Uz mi dochazi napady jak telo onoho POSTu sestavit. Zkousel jsem vse, co jsem kde precetl.
Spravna cesta by podle me byla :
1) Prekodovat retezec z unicode na pozadovane kodovani :String fVal = new String(val.getBytes(), "ISO 8859-2");
2) Pouzit url encoder pro retezec fVal a dane kodovani
3) Vytvorit post
Nevite jak presne, postupovat pri kodovani POSTu, nebo nemate fungujici kus kodu?
Diky Tomas.
-
Tento kód
String fVal = new String(val.getBytes(), "ISO 8859-2");
nepřevádí kódování. Pouze vezme bajty z původního řetězce (ten je v Unicode, protože v Javě je každý řetězec interně v Unicode) a pak z nich vytvoří nový řetězec, přičemž konstruktoru je dáváno k uvěření, že bajty obsahují ISO-8859-2 znaky - což není pravda. Navíc, nový řetězec bude opět v Unicode, viz výše.
Proto je v ULEncoderu metoda encode(string) deprecated a místo ní se používá metoda encode(string, encoding). Pokud by se kódování řešilo nějak ve vlastní režii, je třeba pracovat s bajty v daném kódování, které se z řetězce získají pomocí metody getBytes(encoding).
Jinak pozor na to, že vstupní data v Unicode nemusí být převeditelná do ISO-8859-2 - mohou obsahovat znaky, které v tomto kódování nemají odpovídající reprezentaci.
-
mrkni na http://hc.apache.org/httpclient-3.x/tutorial.html