Estou com problemas em exibir os caracteres especiais ( ç ~ ´ ` ) em uma página JSP corretamente. O início do JSP está assim:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" session="false" import="java.sql.*" import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Buscar</title>
</head>
e no meio do JSP, eu imprimo as seguintes informações, vindas de uma base de dados MySQL configuradas em latin1:
<tr>
<td> <center> <h5>Nome</h5> </center> </td>
<td> <center> <h5>Marca</h5> </center> </td>
<td> <center> <h5>Modelo</h5> </center> </td>
</tr>
<%
Connection con = null;
con = ConnectionFactory.getEquipamentosDataBaseConnection();
String sql = (String) request.getAttribute("sql");
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while( rs.next() ){
%>
<tr>
<td><%= rs.getString("nome") %></td>
<td><%= rs.getString("marca") %></td>
<td><%= rs.getString("modelo") %></td>
</tr>
<%
}
rs.close();
stmt.close();
con.close();
%>
</table>
Assim que a página é carregada, tanto no Firefox quanto no Opera, os caracteres especiais (acentos, cedilhas…) não aparecem. Em seu lugar aparecem coisas como “éõçõá ì”
A questão é a seguinte: se eu vou (no Firefox) em “View -> Character Encoding” está marcado “Western (ISO-8859-1-)” o que, ao meu ver, está perfeitamente correto pois eu setei esse formato no início do JSP. Porém, se eu mudar (no Firefox) para “UTF-8” e der um reload na página, os caracteres especiais passam a aparecer corretamente!
Assim, eu resolvi mudar, na página JSP, todos os “ISO-8859-1” para “UTF-8”. Só que, dessa forma, os caracteres especiais também não apareceram corretamente! Indo (no Firefox) em “View -> Character Encoding” está setado “UTF-8” (como era para ser, pois setei isso no início do JSP). Porém, desta vez, os caracteres especiais não são exibidos corretamente!
Resumindo:
Colocando no cabeçalho JSP tudo ISO-8859-1 e não fazendo nada no Firefox, não funciona (os caracteres especiais são exibidos incorretamente)
Colocando no cabeçalho JSP tudo ISO-8859-1 e alterando manualmente no Firefox para UTF-8 (em “View -> Character Encoding” ), funciona. (os caracteres são interpretados corretamente)
Colocando no cabeçalho JSP tudo UTF-8, não funciona (os caracteres não são exibidos corretamente)
Também já tentei colocar no JSP, os seguintes códigos:
request.setCharacterEncoding("ISO-8859-1");
response.setCharacterEncoding("ISO-8859-1");
Tentei os dois códigos acima tanto com ISO-8859-1 como UTF-8. Nada funcionou!
Não sei mais o que faço. Alguém tem alguma idéia?