» »

[XML, Java] - UTF-8 in šumniki (Đ ne dela)

[XML, Java] - UTF-8 in šumniki (Đ ne dela)

DoberMan ::

Pozdravljeni.
Pojavil se mi je dokaj čuden problem, ki ga nikakor ne morem rešiti in sicer v Java servletu pokličem nek url, ki vrača podatke, jaz response lepo shranim v XML in to je to. Podatke pa moram zaradi velike količine stream-at direkt do userja.

Ampak v XML datoteki, se mi ne glede na to kakšen charset nastavim v responsu in ne glede na različne kombinacije branja streamov Đ ne izpiše. Ostali šumniki, vključno s Ć so vsi ok.
Sem mislil da je morda že odgovor strežnika pokvarjen pa ni tako, če url "ročno" izvedem je Đ normalno izpisan.

Primer kode:

//določim charset za response in tip datoteke
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+test+".xml");

PrintStream out = new PrintStream (response.getOutputStream());

...

//določim url
URL url = new URL ("pač nek url");

//stream iz url-ja pripeljem do inStream
DataInputStream inStream = new DataInputStream( new BufferedInputStream ( url.openStream()));

//nekaj stvari za zapis ...
byte[] buff;
buff = new byte[1024*6000];
int noBytes;
ByteArrayOutputStream baos = new ByteArrayOutputStream();

//zapisujem v out (PrintStream)
while( ( noBytes = inStream.read(buff)) != -1 )
{
baos.write(buff,0,noBytes);
}

out.println(baos.toString());

inStream.close();

To je nekako to. Sem poskušal namesto Printstream uporabit tudi PrintWriter (namesto byte-ov vrača char) pa je bilo še slabše.

A sem jaz že v osnovi kje falil, ali je samo kakšen izmed uporabljenih class-ov neprimeren za Đ-je.

Hvala za odgovore.

DoberMan ::

Sem rešil problem... streami so že ok, problem je bil v bufferju in sicer tule

byte[] buff;
buff = new byte[1024*6000];
int noBytes;
ByteArrayOutputStream baos = new ByteArrayOutputStream();

//zapisujem v out (PrintStream)
while( ( noBytes = inStream.read(buff)) != -1 )
{
baos.write(buff,0,noBytes);
}
out.println(baos.toString());

ko sem sedaj šel mimo bufferja:

while( ( noBytes = inStream.read()) != -1 )
out.write(noBytes);

stvari delajo ok.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] HTTPS client

Oddelek: Programiranje
173176 (1906) peterv6i
»

[java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zaht

Oddelek: Programiranje
132264 (2264) infiniteLoop
»

[java] Runtime.exec()

Oddelek: Programiranje
111883 (1756) borchi
»

Java - JBoss - Servlet - getOutputStream() has already been called for this response

Oddelek: Programiranje
81060 (977) kopernik
»

Kako pošiljanje datotek v JAVI.

Oddelek: Programiranje
141835 (1706) kopernik

Več podobnih tem