Petr Burdik wrote:
> Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty
> postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to
> misto hacku a carek otazniky. Pouzivam ted toto:
>
> String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" );
>
> Nevite cim by to mohlo byt?
Tahle konstrukce je dost nesmyslna. Jmeno promenne nameUTF8
vzbuzuje dojem, ze se jedna o UTF8 bajty, ale je to evidntne
Java String, ktery je tvoren znaky. A ten prevedete
na posloupnost bajtu v utf-8, a tu pak berete jako
bajty v Cp1250 a udelate z toho zase Java String.
Vysledek musi byt naprosty nesmysl, krome pripadu,
kdy v promenne "nameUTF8" uz byl naprosty nesmysl
vznikly nactenim Cp1220 bajtu omylem povazovanych za utf-8 bajty,
pak se ty dva nesmysly navzajem vyrusi.
Takze si rozmyslete, co vlastne potrebujete,
a hlavne si uvedomte rozdil mezi *znaky* a *bajty*.
String je retezec *znaku*, a prevodem na konkretni
kodovani vznikne poslopnost *bajtu*. A naopak.
Takze pokud mate na vstupu, treba z textoveho souboru,
*bajty* v UTF-8, a chcete na vystupu *bajty* v CP1250,
tak prevod probiha pouhym nactenim do Stringu a jeho
opetovnym zapsanim, takhle:
BufferedReader in =
new BufferedReader(
new InputStreamReader(
new FileInputStream("soubor_v_utf8.txt"),"utf-8"));
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("soubor_v_Cp1250.txt"),"Cp1250")));
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
Psal jste puvodne cosi o databazi, ze je v UTF-8. To by melo byt
uplne jedno, protoze je odpovednost JDBC ovladace, aby metoda
ResultSet.getString() vracela javovy String, tedy probehlo prekodovani
z bajtu v databazi na znaky ve Stringu.
Kdysi (asi deset let zpatky) tohle nefungovalo v Postgresu,
ale davno to funguje, a nezda se mi, ze by dnes existoval
JDBC ovladac, ktery by prekodovani neprovadel spravne.
Co pouzivate za databazi ?
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
