Problemas com caracteres iso

Olá a todos.

Tenho um editor de texto no site.
Quando vou enviar um texto com título, moastra esse tipo de caractere:

áá

Eu já mudei a codificação da página que envia e do servlet que trata para iso, mas não resolveu.

// no servlet response.setContentType("text/html;charset=iso-8859-1");

Depois ele faz um select do que foi salvo e manda o resultado para a mesma página do editor, então acho que ela também teria que ser iso.

Mas não resolve.

Alguma idéia de como resolver?

[]s

* Edit: troquei o servlet que recebe a requisição, por uma página JSP e mudei a codificação para ISO-8859-1 mas ainda não grava acento no banco de dados.

Eu me precipitei um pouquinho.

Na verdade são os campos input de um formulário mesmo.

Os dados contento acentos e cedilha são inseridos no banco de dados e retornados como estes símbolos ae: áá

Oi,

você já deu uma olhada nesse tópico?

http://www.guj.com.br/posts/list/12456.java

fw

Ok, vou deixar minha dúvida lá.

[]s

Ou,

não é essa a idéia,

se você ler a thread que te passei, você verá que a informação a página que está o seu formulário deverá:

[code]

[/code]

no seu caso iso-8859-1

o formulário, terá que ter a tag accept-charset:

<form action=". . ."       accept-charset="iso-8859-1,utf-8">  

os arquivos jsp:

<%@ page contentType="text/html; charset=UTF-8" %>

No link ainda mostra uma função para converte de iso8859-1 para utf-8.

Você tem que compatibilizar o encoding da sua aplicação com o encoding do seu banco de dados. E verificar se o client de conexão está utilizando o mesmo encoding.

Você deve lembrar que o encoding padrão da linguagem Java é o utf, diferente do php que é o iso-8859-1. Principalmente por essa razão, os caracteres que você está obtendo e a “representação da tradução” dos caracteres especiais do iso em utf.

Faça um teste, pegue a string lida do banco e converta explicitamente para iso antes de apresentar no html:

try { byte[] stringBytesISO = isoString.getBytes("UTF-8"); utf8String = new String(stringBytesISO, "ISO-8859-1"); } catch(UnsupportedEncodingException e) { // Mostra exceção mas devolve a mesma String System.out.println("UnsupportedEncodingException: " + e.getMessage()); utf8String = isoString; }

fw

Ps: isso se o banco estiver em utf, ou o client configurado para utf.

Não entendi muito bem este teste mas já resolvi o problema.

Fui fazendo uns testes aqui, adicionando
@charset “ISO-8859-1”; no início de todos os arquivos css,
adicionando accept-charset=“iso-8859-1” em todos os forms, mudando o encoding do xml para iso e mudando o encoding das tabelas para utf8.

Antes, eu fiz isso, mas não tudo junto.
Agora resolveu. Acho que eram os arquivos css mesmo, pois isso nunca
aconteceu comigo, mesmo eu usando templates.

Obrigado pela ajuda.
Foi fundamental pra mim.

Qualquer coisa, posto aqui.

[]s a todos.

Este tópico foi reaberto, pois o problema só foi resolvido no Mozilla Firefox.

Não é ao inserir, é a codificação da página mesmo:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apae de Medina - Administração :: Opinião do internauta</title>

E já no mozilla aparece tudo normal.

[code]

Apae de Medina - Administração :: Opinião do internauta @import "ferramentas.css";

[/code]

* Arquivos que modifiquei:

[size=11]* web.xml : <?xml version="1.0" encoding="ISO-8859-1"?>

* sun-web.xml: <?xml version="1.0" encoding="ISO-8859-1"?>

* todos os css: @charset “ISO-8859-1”;

* JSP: <%@page contentType=“text/html” pageEncoding=“ISO-8859-1”%>

* html:

* Tabelas do banco de dados: DEFAULT CHARSET=utf8;
[/size]

Não entendi o porquê disso entre os dois browsers e como posso resolver.

Uma imagem da real situação:

Os caracteres com outra codificação foram inseridos usando o Internet Explorer.
Estou visualizando esta página no Mozilla.
E o css da administração de minha aplicação é bem simples, fui eu mesmo
quem fez, então descarto ele de ser o culpado.

Alguma idéia do que possa ser?

* edit:

Segui como no tutorial, atribuí tudo com UTF-8 mas ainda continua o mesmo problema no IExplorer:

[code]

Administração :: Opinião do internauta @import "ferramentas.css";
voltar para a administração | Comentários dos tópicos

Opinião do Internauta

[/code]

Até adicionei a converção de encoding em meu servlet, mas não deu certo:

[code]public class contactForm extends HttpServlet {

/** 
  • Converte o formato ISO8859-1 (default IE) para UTF-8
    */
    public String toUTF8(String isoString) {
    String utf8String = null;
    if (null != isoString && !isoString.equals("")) {
    try {
    byte[] stringBytesISO = isoString.getBytes(“ISO-8859-1”);
    utf8String = new String(stringBytesISO, “UTF-8”);
    } catch(UnsupportedEncodingException e) {
    // Mostra exceção mas devolve a mesma String
    System.out.println("UnsupportedEncodingException: " + e.getMessage());
    utf8String = isoString;
    }
    } else {
    utf8String = isoString;
    }
    return utf8String;
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType(“text/html;charset=UTF-8”);

    PrintWriter out = response.getWriter();
    
        String nome = request.getParameter("nome");
        String email = request.getParameter("email");
        String msg = request.getParameter("msg");
        
        if (nome.equals(null) || nome.equals("")) {
             response.sendRedirect("contato?nome=no");
             return;
          }
        
        if (email.equals(null) || email.equals("")) {
             response.sendRedirect("contato?email=no");
             return;
          }
        
          if (msg.equals(null) || msg.equals("")) {
             response.sendRedirect("contato?msg=no");
             return;
          }
    
    try {
        Connection conn = conexao.getConection();
        
        PreparedStatement pstmt = 
         conn.prepareStatement("INSERT INTO contact ( nomeContact, emailContact, msgContact, "+
         " dtContato ) VALUES (?, ?, ?, now())");
        pstmt.setObject(1, nome);
        pstmt.setObject(2, email);
        pstmt.setObject(3, msg);
    
        pstmt.execute();
        
             request.getSession().setAttribute("Enviado", 
                     "<font color=blue>Mensagem enviada com sucesso!</font><br><br>");
     	 response.sendRedirect("contato");
    
          conn.close();
        
      } catch(SQLException sqlex) {    
       out.println("Não foi possível enviar a mensagem!<br>" +sqlex); 
    } catch(Exception ex) {
        response.sendRedirect("contato?error");
    } finally { 
        out.close();
    }[/code]