Acentuação quebrada MySQL

2 respostas
leonardo.bilar

Olá pessoal blz?

Estou com uma dificuldade envolvendo acentuação em minha aplicação web.
Estou utilizando UTF-8, porém a acentuação quebra apenas quando recupero algum registro do banco.
OBS: Se verificar o registro direto no banco a acentuação está ok!

Nessa aplicação utilizo o vRaptor3 e o Hibernate 3.

Alguém tem alguma sugestão do que pode ser feito?
Já verifiquei o encoding das JSPs, do banco e também nas configurações do próprio navegador e está tudo como UTF-8

Desde já obrigado,

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>adv</display-name>
	
	<!-- configura o controlador do VRaptor -->
	<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	
	<context-param>
    	<param-name>br.com.caelum.vraptor.packages</param-name>
    	<param-value>
    	    br.com.caelum.vraptor.util.hibernate
    	</param-value>
	</context-param>
	
	<context-param>     
        <param-name>br.com.caelum.vraptor.encoding</param-name>     
        <param-value>UTF-8</param-value>     
    </context-param>  
	
	<jsp-config>  
        <jsp-property-group>  
            <url-pattern>*.jsp</url-pattern>  
            <include-prelude>/header.jspf</include-prelude>  
            <include-coda>/footer.jspf</include-coda>  
        </jsp-property-group>  
    </jsp-config> 
</web-app>
Hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">*******</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/adv?autoReconnect=true&amp;characterEncoding=UTF-8</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		 
		<mapping class="br.com.adv.modelo.Advogado" />
		<mapping class="br.com.adv.modelo.Cliente" />
		<mapping class="br.com.adv.modelo.Endereco" />
		<mapping class="br.com.adv.modelo.Forum" />
		<mapping class="br.com.adv.modelo.Natureza" />
		<mapping class="br.com.adv.modelo.Rito" />
		<mapping class="br.com.adv.modelo.Telefone" />
		<mapping class="br.com.adv.modelo.Vara" />

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

2 Respostas

BrunoFurtado

Opa…

Cara, veja se essas informações relacionadas ao MySQL te ajudam…

// BANCO
// verificando charset de banco
SELECT CHARSET(DATABASE());

// alterando charset de banco
ALTER TABLE table_name DEFAULT CHARACTER SET utf8;


// TABELA
// verificando charset de tabela
SELECT 
	ccsa.character_set_name 
FROM 
	information_schema.tables t,
	information_schema.collation_character_set_applicability ccsa
WHERE 
	ccsa.collation_name = t.table_collation
    AND t.table_schema = "database_name"
    AND t.table_name = "table_name";

// alterando charset de tabela
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Abraço!

leonardo.bilar

Muito obrigado pela ajuda cara!

Usei os comandos sugeridos e todos retornaram utf8.

Um outro teste que fiz foi ao invés de mostrar o resultado na view eu exibi o resultado no console e também em um arquivo pdf.
Em ambos a acentuação veio quebrada.

Alguém tem mais alguma ideia do que pode ser?

Desde já obrigado!

Criado 29 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 2
Participantes 2