Testy robię na XP SP3, Tomcat 6.0.20
Problem jest następujący. Na serwerze znajduje się plik tekstowy z kodowaniem iso-8859-2. Chcę go (po zrobieniu z niego HTML-a i pewnych zmianach) wyświetlić za pośrednictwem servletu w przeglądarce. Jak uniknąć krzaczków? Najbliżej celu jestem w takim rozwiązaniu:
Czytanie pliku:
StringBuffer sb=new StringBuffer("");
BufferedReader br=new BufferedReader(new FileReader(...));
while(br.ready())
{
sb.append(br.readLine()+"\n");
}
br.close();
String result=sb.toString();
Odesłanie pliku:
response.setContentType("text/html; charset=windows-1250"); //przy iso-8859-2 jest zupełnie źle
...
out.println("<!DOCTYPE DOCTYPE PUBLIC \"-//W3C//DTD HTML 4.0 Final//EN\">");
out.println("<html>");
out.println("<head>");
out.println("<title>"+fileName+"</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-2\"></head>");
out.println("<body><pre>");
//tu jest chwilowo niewykonywane przetwarzanie zmiennej result
out.write(result);
out.println("</pre></body></html>");
Otrzymuję poprawny plik z niepoprawnym nagłówkiem:
...
Content-Type: text/html;charset=windows-1250
...
W przeglądarce widać plik z usuwalnymi krzakami (Widok => Kodowanie znaków).