konto usunięte

Temat: Polskie znaki, servlet generujacy plik CSV

Witam
Mam servlet generujący plik csv ale brakuje w nim polskich znaków(krzaczki sa), jak zmienię format pliku na txt to już są polskie znaki.

Servlet wyglada tak:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
FileName = "Raport.csv";

strOut+=";śćżź;"+"\n";
response.reset ();

response.setContentType ( "application/octet-stream; charset=UTF8; pageEncoding=UTF8");
response.setHeader("Content-disposition","attachment; filename="+FileName);
PrintWriter out;
try{
request.setCharacterEncoding("UTF8");
out = response.getWriter();
out.write(strOut);
}catch(IOException e){
e.printStackTrace();
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet (request, response);
}
public void setFileName(String filename){
FileName = filename;
}
}

Wiecie może w czym jest problem?Marek Matuszewski edytował(a) ten post dnia 03.08.11 o godzinie 00:31
Paweł Janusz

Paweł Janusz Solution Delivery
Manager @ Onwelo

Temat: Polskie znaki, servlet generujacy plik CSV

Wydaje mi się, że wiem :)
Zamiast strOut+=";śćżź;"+"\n";
spróbuj:
strOut+=";śćźż;".getBytes("utf8")+"\n";
jeśli to nie pomoże, to daj znać :)
Łukasz Żuchowski

Łukasz Żuchowski Software Wizard

Temat: Polskie znaki, servlet generujacy plik CSV

Przy kompilacji dodaj parametr "-encoding" z wartością "UTF-8".

konto usunięte

Temat: Polskie znaki, servlet generujacy plik CSV

Przy zrobieniu .getBytes("utf8") to zamiast krzaczków jest taka referencja [B@3d73d62d

A jeśli chodzi o dodanie parametru przy kompilacji:
Window/Preferences/General/Workspace/ i w text file encoding ustawione mam cały czas UTF-8.

Aplikacja jest w GWT a servlet jest tam dodatkowo.
Paweł Janusz

Paweł Janusz Solution Delivery
Manager @ Onwelo

Temat: Polskie znaki, servlet generujacy plik CSV

To jeszcze zrób strina z tego getBytes :)

konto usunięte

Temat: Polskie znaki, servlet generujacy plik CSV

To nic nie daje dalej to samo :/
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Polskie znaki, servlet generujacy plik CSV

Uprościłem Twój kod do:


response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
response.addHeader("Content-disposition:", "attachment; filename=Raport.csv");
PrintWriter out;
try {
request.setCharacterEncoding("UTF8");
out = response.getWriter();
out.print(strOut);
} catch (IOException e) {
e.printStackTrace();
}


I działa - sprawdzałem w aplikacji GWT

Trzy uwagi

1) out.print() zamiast out.write() -> "the string's characters are converted into bytes according to the platform's default character encoding, and these bytes are written in exactly the manner of the write(int) method. "

2) nie wiem czy nie psujesz czegoś używając setHeader() zamiast addHeader() (set nadpisuje nagłówki)

3) Last but not least, obstawiam, że Twój kod też dobrze działa - czy Ty aby nie otwierasz pliku w Excelu i on Ci pokazuje krzaki? Sprawdź jakimś edytorem/przeglądarką tekstu, ustawiając kodowanie na UTF-8 ;)

konto usunięte

Temat: Polskie znaki, servlet generujacy plik CSV

Dałem swój plik csv do notatnika i są polskie znaki.A te krzaczki są przyczyna tego ze plik jest otworzony w Excelu? Bo głownie chodzi mi żeby taki był.

To co napisałeś mi to jest faktycznie uproszczone bo tak samo działa a do tego jest bardziej czytelne.

Zapisałem plik raport.csv uruchomiłem go w notatniku i jeszcze raz zapisałem do csv to były już polskie znaki. Wydaje mi się ze trzeba jakoś ustawić może przeglądarkę...
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Polskie znaki, servlet generujacy plik CSV

Spróbuj wygenerować CSV w windows-1250 zamiast w UTF-8

konto usunięte

Temat: Polskie znaki, servlet generujacy plik CSV

SUPER DZIAŁA.
WIELKIE DZIĘKI

Następna dyskusja:

Polskie znaki w serwletach




Wyślij zaproszenie do