Erro Charset/Enconding para MySql+Jpa/Hibernate+Facelets+Tomcat  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
Flasoft
JavaGuru
[Avatar]

Membro desde: 22/05/2006 15:46:02
Mensagens: 230
Localização: Araraquara (SP interior)
Offline

Pessoal estou fazendo um select simples com jpa/hibernate em uma tabela:


Deveria retornar uma lista de beans to tipo Genero cujo a propriedade Descricao fosse respectivamente: Ação, Animação, Comédia...
mas retorna: A?Æo, Anima?Æo e Com?dia

Então achei um exemplo (http://www.profissionaisdeweb.com/desenvolvimento/resolva-os-problemas-de-acentos-no-mysql-em-campos-blob-e-outros/) e adaptei:

para conv a coluna para utf:

Então passou a retornar: A��o, Anima��o, Comdia...

Minha url estou utilizando a url de conexão:
jdbc:mysql://localhost:3306/MeuDB?characterEncoding=UTF-8
mas já tentei e tive o mesmo resultado para:
jdbc:mysql://localhost:3306/MeuDB
jdbc:mysql://localhost:3306/MeuDB?useUnicode=true&characterEncoding=UTF8
jdbc:mysql://localhost:3306/MeuDB?characterEncoding=UTF8&characterSetResults=UTF8
jdbc:mysql://localhost:3306/MeuDB?useUnicode=true&characterEncoding=UTF8&characterSetResults=UTF8


Em todos os meus XHTMLs eu coloco na primeira linha:
<?xml version="1.0" encoding="UTF-8"?>

e no body da pagina(template) eu coloco também:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Alguém tem alguma idéia do que está ocorrendo?

This message was edited 1 time. Last update was at 17/12/2009 16:27:11


Blog: http://flasoft.blogspot.com
SCJP5
Achoqueminhabarradeespaçosestácomproblemas
eU connsigg diggtar 500 caratereteres porr minito
[Email] [WWW] [MSN]
Flasoft
JavaGuru
[Avatar]

Membro desde: 22/05/2006 15:46:02
Mensagens: 230
Localização: Araraquara (SP interior)
Offline

Após um dia tentando e tentando constatei que o culpado é o Windows!

Utilizo Windows Vista Home.
Estava executando o insert pelo programa MySQL Command Line Client(console desenvolvido para o MySQL), este console no windows abre em uma DOS, as janelas do DOS, utilizam ISO-XXXX-X(provavelmente 8859-1, padrão microsoft), então quando eu digitava o insert na janela do DOS ela enviava para console um insert á estragado, de charset diferente do banco!

quando eu fazia o select a console retornava o binario para a janela do DOS, que intepretava da maneiro correta para ela, mas no banco já estava guardado de forma errada, a janela do dos que me entregava o bin correto.

Ex:
Eu digito no na janela do DOS utilizando o charset default do DOS:
INSERT INTO `genero` (`id_genero`, `descricao`, `id_imagem_poster_padrao`) VALUES (2, 'Ação', null);

Ela envia para a console do banco que esta trabalhando com UTF e interpreta:
INSERT INTO `genero` (`id_genero`, `descricao`, `id_imagem_poster_padrao`) VALUES (2, 'Ao', null);

dai o banco salva na coluna descricao o binario equivalente a isto daqui: Ao

Quando faço um select pelo DOS ele faz o processo inverso:
Pega este binario converte para Ao devolve para a janela do DOS que converte para ISO_XXXX_X que sai extamente o q ele qria...

Solucao este tipo de parametrizaçao, onde nao pretendo fazer uma tela de adm, vou fazer pelo MySql Query Browser, fornecido pela própria equipe MySql, ele leva em consideração o charset do banco, para executar os comando, extamente como minha aplicação, então funciona!

Blog: http://flasoft.blogspot.com
SCJP5
Achoqueminhabarradeespaçosestácomproblemas
eU connsigg diggtar 500 caratereteres porr minito
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team