Problema acentuação de caracteres usando Facelets

25 respostas
T

Pessoal, estou começando a testar as funcionalidades do Facelets aqui em um projeto. Criei minha página de template e estou utilizando tranquilo.

O problema é que as palavras com ç e acentos sao renderizadas sem esses caracteres. Ex.: Relação é renderizado como Relao, entenderam?

O cabecalho do template e das paginas q o utilizam esta assim

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Se alguem tiver algum palpite do que pode ser, ajuda nois ai! Valeu

25 Respostas

A

Eu creio que o problema seja que você está inserindo caracteres especiais diretamente no seu código html, eles devem ser convertidos. Por ex: no código fonte o “ç” deve ser convertido para “ç” o “ã” deve ser convertido para “ã”. Alguns editores html mais avançados como o dreanweaver fazem essa conversão. Existe este plugin pro eclipse que faz essa conversão também, porém nunca o usei.

T

O engraçado é que ja está convertido…rs

T

Boa tarde galera,

Deixa eu tentar explicar melhor o meu problema

Usando Facelets + Tomcat estou com problemas de acentuação que eh o seguinte: as palavras com acento, como por exemplo, Cabeçalho, se estiver assim:

Cabe& c cedil;alho

ele da o erro:

Error Traced[line: 18] The entity "ccedil" was referenced, but not declared.

ao renderizar a página c eu coloco o cedilha no código página assim:

Cabeçalho

o navegador me retorna o seguinte erro: Code:

Erro no processamento de XML: entidade não definida
 Posição: http://127.0.0.1:8080/KillBugs/home.jsf
 Número da linha 55, Coluna 65:

.

Ou seja, a acentuação não funciona de jeito nnhum. O cabeçalho está assim:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core">
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

tanto na página do template como nas outras páginas q o utilizam. Alguem sabe me dizer um caminho para corrigir esse problema.

Valeu, obrigado pela atenção.

Inté

D

Declara o encoding no header da página:

&lt?xml version="1.0" encoding="ISO-8859-1"?&gt

Vai resolver o problema com suas acentuações ç, á, é, etc…

Até mais

D

troca essa linha
<meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1” />

por essa
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” />

S

Pessoal, acho que o problema não deve ser isso não. Eu tentei já de tudo… trocando o encoding, o contentType charset, etc.

O problema tá que tem alguma coisa interceptando a resposta e o símbolo & deve fazer parte da gramaática dessa porcaria.

Bem, alguém sabe como desabilitar essa conversão? não quero que o JSF converta “á” para “á”. Isso não é eficiente… nao quero por esse lixo no meu banco depois, etc…

Obrigado.

:shock:

S
Consegui fazer com a seguinte ação, coloquei o no cabeçalho do arquivo:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
aqui vi que poderia até com UTF-8 mesmo, ou seja, a questão era so isso ae acima mesmo ja no outro
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
teve de ser o ISO-8859-1, esse é uma página em que eu uso o body do template no facelets a diferença entre os dois ta ali em html e composition.

e no momento em que eu precisava digitar algo com acento eu incluir já o caracter com o acento. ( não usei os códigos do html (se incluir como código não aparecem ).

Não sei se é a forma ideal, mas funcionou :D

L

Alguém já conseguiu resolver esse problema?
Estou passando pela mesma situação.
Quando troco o encoding para UTF-8 ele ñ reconhece os caracteres com &…
ou &#, na interface está sendo usado tb este caracter • que aparece como ?..
Alguém sabe a solução pra isso?
Grata.

L

Olá pessoal, acho que não fui muito específica na minha pergunta.
Vejam se vcs conseguem me ajudar:
tenho que escrever o caracter

Que pode ser escrito dessa forma

& # 8226;
&  bull;

O problema é que quando a página é aberta aparece uma interogação das duas formas.
Já coloquei esse composition que me ajudou em outro problema, estou usando o encoding ISO-8859-1 tanto no template quanto nas páginas XHTML (facelets +jsf), porém quando troquei pra UTF-8 ele não reconhece os caracteres & nbsp; e nem o & #8226;
Estou desenvolvendo uma aplicação no Ubuntu 6. alguma coisa com NetBeans 5.5.
Desde já agradeço pela ajuda!
:slight_smile:

V

será que não resolve geral se converter o arquivo para UTF-8 ??? não somente via encoding, pelo eclipse, clica com o direito em cima do arquivo, clica em preferences, e no encoding, muda para UTF-8´. Acho que resolve,e coloca no encoding da página tambem, UTF-8.

ufaaaa.

L

Estou usando netbeans, mas vou tentar isso tb.

L

Pessoal, continuo com o problema:
Quando coloco o encoding das páginas e do template em ISO-8859-1

<?xml version="1.0" encoding="ISO-8859-1"?>

O caractere & bull; ou & #8226; são aceitos, mas aparece uma interrogação ?

Quando coloco tudo em UTF-8

<?xml version="1.0" encoding="UTF-8"?>

ocorre o seguinte erro:

javax.servlet.ServletException: Error Parsing /new.jsp: Error Traced[line: 17] Invalid byte 2 of 4-byte UTF-8 sequence

na linha onde está o caracter & bull; ou & nbsp ; ou & #8226;

Como posso passar tudo pra Unicode?
Gostaria de escrever espaço e •
Ou fazer o ISO funcionar.

Estou usando ubuntu, net beans e firefox, mas no Windows as ? persistem.

Desde já agradeço sugestões!!!

L

Outro fato singular é, quando as páginas foram elaboradas apenas em HTML o caracter aparecia normalmente.
Mas só agora(eu estou fazendo a integração das páginas, utilizando o código feito pela web designer usando jsf e facelets), surgiu esse problema…

:cry:

L

Please, I need some help!!!
:cry:
:cry:
:cry:

T

cara,

tive o mesmo problema…

é facelets e jsf 1.2?

e por sinal no firefox 3 funciona e no 2 não?

então coloque:

<f:view contentType=“text/html”>

com o contentType…

L

Cara muito obrigada, vou tentar isso amanhã mesmo.
Agora que vc falou, lembrei que não tem essas tags nas páginas! E estamos usando o firefox 2.
Vou testar sim!
Obrigada!!!
:smiley:

T

isso resolveu o seu problema?

L

Menino, sabe que não funcionou…
Aconteceu a mesma coisa, e testei no firefox 3 tb.
Ficou do mesmo jeito…
Ñ sei mais o que faço, vou tentar fazer o deploy da aplicação no windows…pra ver se funciona, pq já testei a aplicação acessando no windows, mas o deploy foi feito no linux…
Qualquer sugestão eu agradeço!!
Mto obrigada pela tentativa!!!

:wink:

T

Experimente usar: <f:verbatim>&amp;nbsp;</f:verbatim>

O

Olá,

Estou com um problema semelhante. Todos os textos das páginas da minha aplicação que tem acento são substituidos por ??.

Alguém tem alguma idéia do que fazer?

o faces.config.xml já está setado com pr-br como lingua default

<application>
        <locale-config>
            <default-locale>pt</default-locale>
        </locale-config>
    </application>
O

Acredito que o problema, no meu caso, é que a minha aplicação usa EJB, que dispara exceções. O texto no EJB está desconfigurado.

Alguém sabe como “permitir” acentuar as exceções disparadas pelo EJB?

A

Estou passando pelo mesmo problema numa página .XHTML feita em JSF. Não reconhece acentos. Já teste tudo que foi postado acima…

A

Caso use o UTF-8, você terá que substituir os acentos pelos caracteres abaixo:
á = \u00e1
à = \u00e0
â = \u00e2
ã = \u00e3
ä = \u00e4
Á = \u00c1
À = \u00c0
 = \u00c2
à = \u00c3
Ä = \u00c4
é = \u00e9
è = \u00e8
ê = \u00ea
ê = \u00ea
É = \u00c9
È = \u00c8
Ê = \u00ca
Ë = \u00cb
í = \u00ed
ì = \u00ec
î = \u00ee
ï = \u00ef
Í = \u00cd
Ì = \u00cc
Î = \u00ce
Ï = \u00cf
ó = \u00f3
ò = \u00f2
ô = \u00f4
õ = \u00f5
ö = \u00f6
Ó = \u00d3
Ò = \u00d2
Ô = \u00d4
Õ = \u00d5
Ö = \u00d6
ú = \u00fa
ù = \u00f9
û = \u00fb
ü = \u00fc
Ú = \u00da
Ù = \u00d9
Û = \u00db
ç = \u00e7
Ç = \u00c7
ñ = \u00f1
Ñ = \u00d1
& = \u0026
’ = \u0027

A

Batendo cabeça aqui com isso também, consegui com a seguinte manobra.

Cria um filtro para a url /*

e no método:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        
        // resolve o problema de acento. 
        response.setCharacterEncoding("UTF-8");      
        request.setCharacterEncoding("UTF-8");    


        chain.doFilter(request, response);
    }

já nas paginas xhtml usei:

<?xml version="1.0" encoding="ISO-8859-1"?>

Para mim resolveu 100%.
Um abraço.

T

Meu problema se resolveu da forma acima citada, ou seja, setando o UTF-8 no Filter.

Criado 29 de janeiro de 2007
Ultima resposta 1 de out. de 2012
Respostas 25
Participantes 15