Witam.
Robię pobieranie pliku z bazy mysql. W bazie mam pole plik (zawierające zawartość pliku) oraz nazwa_pliku (zawierające nazwę pliku). Jak pobieram plik i w nazwie są polskie znaczki, to np zamiast nazwy "ęóąśłżźćń.gif" daje "-ó-[B-z-D.gif".
W bazie mam oczywiście kodowanie utf-8 i wszystko jest zapisywane jak należy. Na stronie również wszystko wyświetlane jest prawidłowo. Już sam nie wiem co jest nie tak:/
Mój kod wygląda następująco
ResultSet rs_plik = null;
Connection con = null;
Statement stmt= null;
String connectionURL = "jdbc:mysql://localhost/pliki?useUnicode=yes&characterEncoding=utf8"";
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(connectionURL, "root", "");
stmt=con.createStatement();
rs_plik = stmt.executeQuery("SELECT plik, nazwa_pliku FROM pliki where id_plik = '"+ id + "';");
if (rs_att.next()) {
String nazwa = rs_att.getString(2);
out.print("nazwa: "+nazwa);
InputStream fileInputStream = rs_att.getBinaryStream(1);
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/image");
response.setHeader("Content-disposition","attachment; filename=" + nazwa);
int i;
while ((i = fileInputStream.read()) != -1) {
response.getOutputStream().write(i);
}
response.getOutputStream().flush();
fileInputStream.close();
}
}
catch (ClassNotFoundException e) {
try {
throw new ServletException("JDBC Driver not found.", e);
} catch (ServletException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
}
catch (Exception e) {
e.printStackTrace();
}
}
Proszę o pomoc.