Problema com Character

8 respostas
rbroz85

boa tarde senhores,

estou com um problema que nao sei como resolver.

tenho uma aplicaçao que salva textos para o banco de dados.
estou usando netbeans5.5

mas quando eu vou escrever algo do tipo : Coordenação,
no banco ele salva… Coordenaço , tipo que caracteres com acento e cedilha nao funcionam… meu banco ta aceitando , mas acho que tem alguma coisa na minha aplicaçao… algume poderia me dar um help…?

obrigado a todos… e uma boa tarde.

8 Respostas

neohacker

Que tal começarmos pelo Código :!: :smiley:

rbroz85

sim… blz… mas qual seria possivel erro ?

eu dei um system.out;… e saiu errado antes de entrar no banco…
quando eu salvo o dado na jsp, ele joga pro servlet depois joga pra percistencia…

quando entra no servlet eu bati o system,… e saiu Coordenaço

T

Qual banco é?
Que driver e que versão do driver?
Como o banco foi instalado?
Qual é a string de conexão?

Dá a impressão que o Java está mandando os dados em UTF-8 (çã = C3 A7 C3 A3 em hexadecimal), mas o banco quer Latin-1 (çã = E7 E3 em hexadecimal)

rbroz85

eai blz…
to usando mysql 5.0.3
driver 5.0.4
foi instalado, como latin1, developper, essas paradas ae…

conexao = DriverManager.getConnection(“jdbc:mysql://localhost/sigic?user=root&password=123”);

podes crer

T

Uh, esqueci de perguntar se o Java está rodando no Windows ou no Linux.

rbroz85

windows…

se liga… o problema nao pode estar na minha nao ?^???

pois ele quando chega no servlet ele ja chega erradao ja !

T

Para saber se é na sua servlet que os dados chegam errados, então é interessante imprimir o que está chegando.

Digamos que

String texto = request.getParameter ("texto");

seja a string da sua servlet que você desconfia que o browser está mandando com a codificação errada.

Agora vamos converter o texto para um array de bytes, e a seguir ver o que chegou. (Vamos usar a codificação "ISO-8859-1").

byte[] bytes = texto.getBytes ("ISO-8859-1");

Digamos que o texto que subiu seja "çã". Se os bytes vierem como C3 A7 C3 A3, eles estão subindo em UTF-8. Se vierem como E7 E3, estão subindo em Latin-1 (ISO-8859-1).
(estou mostrando em hexadecimal; você pode imprimi-los usando a seguinte função:

static void printHex(byte[] b) {
        if (b == null) {
            System.out.println ("(null)");
        } else {
        for (int i = 0; i &lt b.length; ++i) {
            if (i % 16 == 0) {
                System.out.print (Integer.toHexString ((i & 0xFFFF) | 0x10000).substring(1,5) + " - ");
            }
            System.out.print (Integer.toHexString((b[i]&0xFF) | 0x100).substring(1,3) + " ");
            if (i % 16 == 15 || i == b.length - 1)
            {
                int j;
                for (j = 16 - i % 16; j &gt 1; --j)
                    System.out.print ("   ");
                System.out.print (" - ");
                int start = (i / 16) * 16;
                int end = (b.length &lt i + 1) ? b.length : (i + 1);
                for (j = start; j &lt end; ++j)
                    if (b[j] &gt= 32 && b[j] &lt= 126)
                        System.out.print ((char)b[j]);
                    else
                        System.out.print (".");
                System.out.println ();
            }
        }
        System.out.println();
        }
    }
Adolfo_Rodrigues

Tenta setar o encoding Latin no seu JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
Criado 3 de maio de 2007
Ultima resposta 3 de mai. de 2007
Respostas 8
Participantes 4