Forum » Programiranje » [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.
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3176 (1906) | peterv6i |
» | [java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zahtOddelek: Programiranje | 2264 (2264) | infiniteLoop |
» | [java] Runtime.exec()Oddelek: Programiranje | 1883 (1756) | borchi |
» | Java - JBoss - Servlet - getOutputStream() has already been called for this responseOddelek: Programiranje | 1060 (977) | kopernik |
» | Kako pošiljanje datotek v JAVI.Oddelek: Programiranje | 1835 (1706) | kopernik |