[megoldva] jTextPane karakterkódolás gond

Fórumok

Sziasztok!

Ismét a segítségeteket szeretném kérni, nem találtam eddig megoldást a problémámra. adott egy jTextPane, amibe beleteszek egy eredetileg utf-8 kódolású html tartalamt. nincs is semmi gond, amíg linuxon fut az app, de osx és winxp ékezetek helyett fura karakterek jelennek meg. Próbáltam már convertálni a tartalmat ISO-8859-1-ra de akkor mindenhol ****(nem faja).

Sajna gyér ismnereteim miatt azt sem tudom hol keressem a hibát, plz help!

Köszi előre is a segítséget.

Hozzászólások

Szia!
Nem lehet, hogy a JTextpane-ben használt font nem tartalmazza a szükséges karaktereket?

Lehet, én nem állítottam semilyen fontot.

jTextPane.setContentType("text/html); // NOI18N
jTextPane.setEditable(false);
jTextPane.setName("jTextPane"); // NOI18N
jTextPane.setText(html);
jScrollPane.setViewportView(jTextPane);

tudnál segíteni, hogy erről hogy tudnék megbizonyosodni?

utf-16be-re konvertald...

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"

try {
Charset fromSet = Charset.forName("UTF-8");
CharsetEncoder fromSetEncoder = fromSet.newEncoder();
Charset toSet = Charset.forName("UTF-16");
CharsetDecoder toSetDecoder = toSet.newDecoder();

ByteBuffer frombuf = fromSetEncoder.encode(CharBuffer.wrap(content));
CharBuffer tobuf = toSetDecoder.decode(frombuf);

jTextPane.setText(tobuf.toString());
} catch (Exception ex) {
System.out.println(ex.getClass() + " : " + ex.getMessage());
}

így próbálkoztam, de class java.nio.charset.MalformedInputException : Input length = 1 ezt kaptam :( ezt kaptam. Próbáltam azt, hogy mikor kiszedem a stringet

URL url = new URL(queryString);
URLConnection connection = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
reader.close();
String result = new String(builder.toString().getBytes(), "UTF-16"); //volt, hogy getBytes("UTF-8")-at írtam

akkor erőltetem rá az utf-16-ot, de így már akkor fura karakterek jelentek meg, meg a tartalom egy része el is szállt.

Legalább a próbálkozás jó?

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
String response = new String(builder.toString().getBytes("UTF-8"), "UTF-16");

ez most a legújabb, levágja a szöveg elejét, meg ilyen \u4f43\2uee2 ilyenekkel szemeteli tele :(

A kiírandó adatokat fájlból olvasod be? Ugyanazt a fájlt használod minden OS-en?

Amit írtál, annak szerintem jónak kellene lennie.

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}

Windowson próbáld ki esetleg az "UTF-8" heleytt: "cp1252". Nem tudom pontosan, hogy írják, lehet kötőjel kell közé.

A megoldás annyi volt, hogy az InputStream-nek meg kell adni, hogy utf-8, és utánna nem kell semmit tenni tovább, tehát nem kell utf-16-ba átkódolni. Köszönöm.