[Resolvido]Codificação de Caracteres .jsp/.java

Olá pessoal, estou com um problema em relação a codificação de caracteres… a idéia é colocar tudo UTF-8 para os acentos aparecem direito nas jsps.

Eu já coloquei no início da jsp:

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

e no Netbeans (6.9.1), eu já mudei em “propriedades do projeto>Códigos fonte > Codificação” para UTF-8, porém o problema persiste…

Também estou tendo problemas em relação a codificação no BD, mas isto vou verificar mais adiante pois o banco vai mudar aqui.

Antes que vocês culpem o banco, é importante avisar que uma string feita “na mão” no código java, também está aparecendo errado…

Eu tenho na minha action (código java para quem não conhece struts) algo como:

String teste = "contém"

e no meu jsp:

<%=request.getAttribute("teste")%>

e o resultado no navegador é a palavra “contém”

No contentType também informo charset=UTF-8:

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

[quote=rafaelsantini]No contentType também informo charset=UTF-8:

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

Tentei isso, e não resolveu :s

Se o problema é no request, você pode tentar o seguinte também:

<%request.setCharacterEncoding("UTF-8");%>

[quote=rafaelsantini]Se o problema é no request, você pode tentar o seguinte também:

<%request.setCharacterEncoding("UTF-8");%>

Também ñ funcionou… isso me faz pensar se o netbeans realmente mudou a codificação do meu .java…
É que no início do projeto, estava setada a configuração padrão, com codificação windows-1252, então no meio do projeto foi alterado para UTF-8…
Mas eu já fui até a pasta dos códigos fontes, abri com bloco de notas o código .java e salvei em formato UTF-8… Mas o erro continua.

O NetBeans não altera automaticamente a codificação do arquivo. Se você mudar a codificação do projeto, terá que converter os arquivos.

O arquivo que contém String teste = “contém” realmente está codificado em UTF-8?

Não consigo imaginar uma causa para esse problema. Você consegue reproduzí-lo em outro projeto? Por exemplo, criar uma classe e uma jsp? Caso consiga reproduzir num projeto de teste, envie-me.

[quote=rafaelsantini]O NetBeans não altera automaticamente a codificação do arquivo. Se você mudar a codificação do projeto, terá que converter os arquivos.

O arquivo que contém String teste = “contém” realmente está codificado em UTF-8?

Não consigo imaginar uma causa para esse problema. Você consegue reproduzí-lo em outro projeto? Por exemplo, criar uma classe e uma jsp? Caso consiga reproduzir num projeto de teste, envie-me.
[/quote]

Eu criei um projeto novo, e para minha surpresa, continuou aparecendo “contém”… todas as codificações estão UTF-8.

PS.: Eu ainda coloquei no pom.xml (este é um projeto que usa Maven também) isto: <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Mas o problema persiste O.O

Podes disponibilizar esse projeto que você criou?

posso postar o código do jsp e da action, ñ sei onde posso fazer upload de arquivo

(vou postar sem a tag code, pq a numeração das linhas atrapalha na hora de copiar)

JSP:

<%@page contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

JSP Page <%=request.getAttribute("teste")%>

Action(está em UTF-8 o arquivo aqui):

public class testeAction extends ActionSupport{

private String teste;

public String teste(){
    teste="contém";
    return SUCCESS;
}

/**
 * @return the teste
 */
public String getTeste() {
    return teste;
}

/**
 * @param teste the teste to set
 */
public void setTeste(String teste) {
    this.teste = teste;
}

}

Disponibilizei no seguinte endereço um projeto de teste:

http://www.4shared.com/file/VM7y-vky/testeutf8.html

JSP:

[code]<%@page contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

Teste UTF-8 [/code]

Bean:

[code]/*

  • TesteUtf8.java
  • Created on Feb 18, 2011, 11:12:52 AM
    */

package teste;

/**
*

  • @author Rafael Santini
    */
    public class TesteUtf8 {

    private String teste;

    public TesteUtf8() {
    teste = “Teste de Acentuação”;
    }

    public String getTeste() {
    return teste;
    }

    public void setTeste(String teste) {
    this.teste = teste;
    }

}[/code]

Obrigado, vou dar uma olhada detalhada no código fonte depois do almoço… Mas pelo que vi aqui no post, não tem diferença nenhuma… :confused:

Não tem porque estar errado a acentuação no meu projeto X(

Comparei todos os arquivos do projeto… E não achei nada que culpasse o meu projeto :confused:

Estou achando que tem a ver com o Maven já…

estou tendo o mesmo problema, não sei mais o que mudar no projeto :S

Disponibilize o projeto de teste. Assim, posso ver melhor o problema.

Ok, segue o projeto de teste…

http://www.speedyshare.com/files/26942951/mavenproject2.rar

PS.: Precisa do Maven para rodar o projeto…

Consegui reproduzir o problema.

Num primeiro momento achei que o problema estava relacionado com o Struts ou com o Tomcat, mas ao colocar um breakpoint na linha teste = “contém” verifiquei que após essa atribuição o problema da acentuação já ocorre (após atribuir o texto e ver o valor da variável, essa já aparece com problema). Assim, acho que o problema pode estar com o Maven. Acho que o arquivo está com uma codificação (UTF-8, neste caso) e a compilação está sendo feita com outra codificação.

Infelizmente não encontrei uma solução para essa questão.

De fato o problema é com o Maven.

Para resolvê-lo, coloque a seguinte tag no pom.xml:

${project.build.sourceEncoding}

Essa tag é em build -> plugins -> plugin (maven-compiler-plugin).

Veja como ficou o seu pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>mavenproject2</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>mavenproject2 EE5 Webapp</name>
    <url>http://maven.apache.org</url>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>java.net2</id>
            <name>Repository hosting the jee6 artifacts</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
        <repository>
            <url>http://ftp.ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repo</url>
            <id>eclipselink</id>
            <layout>default</layout>
            <name>Repository for library Library[eclipselink]</name>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.0.11.2</version>
        </dependency>
        <dependency>
            <groupId>com.opensymphony</groupId>
            <artifactId>xwork</artifactId>
            <version>2.0.5</version>
        </dependency>
        <dependency>
            <groupId>jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <type>jar</type>
        </dependency>
    </dependencies>
    <properties>
        <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

Quando eu li o seu post, eu pensei: “é isso! agora vai funcionar!”

Quando eu executei o projeto eu pensei: “merda… não é isso…” :frowning:

Também não resolveu, agora eu já tava achando que só aquela tag @page do jsp não era suficiente, mas ainda adicionei a tag meta no head e continua com o problema :confused:

Acho que você não alterou o pom.xml corretamente.

Disponibilizei o seu projeto de teste no seguinte endereço:

http://www.4shared.com/file/MYNh5JZ2/mavenproject2.html

O problema da acentuação não está mais ocorrendo.

[quote=rafaelsantini]Acho que você não alterou o pom.xml corretamente.

Disponibilizei o seu projeto de teste no seguinte endereço:

http://www.4shared.com/file/MYNh5JZ2/mavenproject2.html

O problema da acentuação não está mais ocorrendo.
[/quote]

Você não disse que tinha criado um filtro para isso… :stuck_out_tongue:

Por isso não funcionou aqui… copiei o filtro e agora ta funcionando!

Valeu! :smiley: