Dúvida Hibernate encoding

Olá pessoal!

Estão aparecendo alguns caracteres estranhos quando salvo informações com acentuação em minha aplicação.

Já procurei saber o que pode estar acontecendo de errado, e descobri que devo setar no arquivo de configuração do Hibernate o encoding para UTF-8.

Tentei de várias maneiras setar esta propriedade, porém não tive êxito. E não sei se é somente esta configuração que devo setar…

Segue abaixo o código do meu arquivo hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="hibernateSessionFactory">

        <property name="hibernate.connection.url">jdbc:postgresql://linux4.faespsenar.com.br:5432/pg_sicp?setUnicode=true;characterEncoding=UTF-8;</property>

        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.username">faespsenar</property>
        <property name="hibernate.connection.password">!faespsenar@</property>
        <property name="hibernate.connection.pool_size">0</property>
        <property name="hibernate.bytecode.use_reflection_optimizer">true</property>
        <property name="hibernate.generate_statistics">false</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.show_sql">false</property>

        <!-- # Cache de Segundo nivel habilitado (Chace de consulta repetidas) # -->
        <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
        <property name="hibernate.cache.use_query_cache">true</property>
        <property name="hibernate.cache.use_structured_entries">true</property>
        <property name="hibernate.cache.use_second_level_cache">true</property>

        <!-- # Atualizacao em Lote # -->
        <property name="hibernate.jdbc.batch_size">1000</property>

    </session-factory>
</hibernate-configuration>

Alguém têm alguma sugestão?

Obrigado.

Tente assim:

...
        <property name="hibernate.connection.url">jdbc:postgresql://linux4.faespsenar.com.br:5432/pg_sicp?charSet=LATIN1;</property>
...

[]'s
JL

P.S.: Verifique se antes de você inserir o dado no banco, o conteudo da String que você vai salvar está correta.

[quote=Mero_Aprendiz]Tente assim:

...
        <property name="hibernate.connection.url">jdbc:postgresql://linux4.faespsenar.com.br:5432/pg_sicp?charSet=LATIN1;</property>
...

[]'s
JL

P.S.: Verifique se antes de você inserir o dado no banco, o conteudo da String que você vai salvar está correta.[/quote]

LATIN1 não! Devo setar como UTF-8!!! Já tentei desta forma antes e não funcinou!

Sim, o conteúdo da string está correto!

[quote=rodrigo.fai]
LATIN1 não! Devo setar como UTF-8!!! Já tentei desta forma antes e não funcinou!
Sim, o conteúdo da string está correto![/quote]

Qual é o encoding do banco?
[]'s
JL

[quote=Mero_Aprendiz][quote=rodrigo.fai]
LATIN1 não! Devo setar como UTF-8!!! Já tentei desta forma antes e não funcinou!
Sim, o conteúdo da string está correto![/quote]

Qual é o encoding do banco?
[]'s
JL[/quote]

O encoding do banco é LATIN1! Mais será que devo alterar o encoding do banco de todas as estações?

Dá uma olhada no link abaixo

quem sabe ele possa te ajudar

http://www.roseindia.net/hibernate/firstexample.shtml

Espero ter Ajudado[]

[quote=Jo? Ant?io]Dá uma olhada no link abaixo

quem sabe ele possa te ajudar

http://www.roseindia.net/hibernate/firstexample.shtml

Espero ter Ajudado[][/quote]

É um artigo básico sobre Hibernate, não menciona nada sobre encoding!

[quote=rodrigo.fai][quote=Jo? Ant?io]Dá uma olhada no link abaixo

quem sabe ele possa te ajudar

http://www.roseindia.net/hibernate/firstexample.shtml

Espero ter Ajudado[][/quote]

É um artigo básico sobre Hibernate, não menciona nada sobre encoding![/quote]

[quote=rodrigo.fai]
O encoding do banco é LATIN1! Mais será que devo alterar o encoding do banco de todas as estações?[/quote]

Bem, se o encoding do seu banco é Latin1, então a alterção que te falei deveria funcionar, a não ser que a String que você vai inserir já esteja com os caracteres trocados antes do insert.
Não entendi bem quando você disse que: “Mais será que devo alterar o encoding do banco de todas as estações?”, mas o que sei é que todos os acessos ao banco devem ter Latin1.
Você tentou inserir um registro de teste, no console do Postgres mesmo, exemplo: insert into Tabela values (‘ãããáááÀÀÂÂÂÂ’).
Veja se esse tipo de teste realmente grava os registros no banco com os acentos.

[]'s
JL

[quote=Mero_Aprendiz][quote=rodrigo.fai]
O encoding do banco é LATIN1! Mais será que devo alterar o encoding do banco de todas as estações?[/quote]

Bem, se o encoding do seu banco é Latin1, então a alterção que te falei deveria funcionar, a não ser que a String que você vai inserir já esteja com os caracteres trocados antes do insert.
Não entendi bem quando você disse que: “Mais será que devo alterar o encoding do banco de todas as estações?”, mas o que sei é que todos os acessos ao banco devem ter Latin1.
Você tentou inserir um registro de teste, no console do Postgres mesmo, exemplo: insert into Tabela values (‘ãããáááÀÀÂÂÂÂ’).
Veja se esse tipo de teste realmente grava os registros no banco com os acentos.

[]'s
JL[/quote]

Eu gostaria de fazer um teste trocando o encoding do banco para UTF-8, para ver se da certo! Mais não consigo alterar!

Já tentei de várias maneiras tracando o encoding no hibernate.cfg.xml para UTF-8 mais não vai de jeito nenhum!!!

[quote=rodrigo.fai][quote=Mero_Aprendiz][quote=rodrigo.fai]
O encoding do banco é LATIN1! Mais será que devo alterar o encoding do banco de todas as estações?[/quote]

Bem, se o encoding do seu banco é Latin1, então a alterção que te falei deveria funcionar, a não ser que a String que você vai inserir já esteja com os caracteres trocados antes do insert.
Não entendi bem quando você disse que: “Mais será que devo alterar o encoding do banco de todas as estações?”, mas o que sei é que todos os acessos ao banco devem ter Latin1.
Você tentou inserir um registro de teste, no console do Postgres mesmo, exemplo: insert into Tabela values (‘ãããáááÀÀÂÂÂÂ’).
Veja se esse tipo de teste realmente grava os registros no banco com os acentos.

[]'s
JL[/quote]

Eu gostaria de fazer um teste trocando o encoding do banco para UTF-8, para ver se da certo! Mais não consigo alterar!

Já tentei de várias maneiras tracando o encoding no hibernate.cfg.xml para UTF-8 mais não vai de jeito nenhum!!![/quote]

Depurei o código aqui e descobri que os caracteres estranhos estão chegando da .jsp!!!

De uma olhada no cabeçalho da minha página:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="t"%>
<%@ attribute name="entity" required="true"%>
<%@ attribute name="collection"  required="true" type="java.util.Collection"%>
<%@ attribute name="ehPermitidoAlterar" required="false"%>

<fmt:setLocale value="pt_BR" scope="session"/>

Será que falta algo?

Valeu.