Problema com letras acentuadas (resolvido)
16/02/2011 00:00
0
Olá pessoal, estou tendo um problema chato e não consigo resolver na internet. É a respeito de letras acentuadas. Quando ponho letras acentuadas no meu html aparece no browser � no lugar da letra. E meu arquivo messages_pt_BR.properties está com caracteres estranhos no lugar das letras acentuadas.

O engraçado é que com estes caracteres esquisitos, no html fica correto. Se eu puser certinho neste arquivo, no html fica com �.

Já pus no head do main.gsp e do index.gsp o código <meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; />. Já pus tb <meta http-equiv=&quot;content-language&quot; content=&quot;pt_br&quot; />. Já pus o charset como sendo ISO-8859-1 e mesmo assim continua este problema. Não tenho idéia de como resolver isto


# messages_pt_BR.properties

#
# Translated by Lucas Teixeira - lucastex@gmail.com
#

default.doesnt.match.message =O campo [{0}] com o valor [{2}] não atende ao padrão definido [{3}]
default.invalid.url.message =O campo [{0}] com o valor [{2}] não é uma URL válida
default.invalid.creditCard.message =O campo [{0}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message =O campo [{0}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message =O campo [{0}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}]
default.invalid.size.message =O campo [{0}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}]
default.invalid.max.message =O campo [{0}] com o valor [{2}] ultrapass o valor máximo [{3}]
default.invalid.min.message =O campo [{0}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message =O campo [{0}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message =O campo [{0}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message =O campo [{0}] com o valor [{2}] não passou na validação
default.not.inlist.message =O campo [{0}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}]
default.blank.message =O campo [{0}] não pode ficar em branco
default.not.equal.message =O campo [{0}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message =O campo [{0}] não pode ser vazia
default.not.unique.message =O campo [{0}] com o valor [{2}] deve ser único

default.paginate.prev=Anterior
default.paginate.next=Próximo

# Mensagens de erro em atribuição de valores. Use &quot;typeMismatch.$className.$propertyName&quot; para customizar (eg typeMismatch.Book.author)
typeMismatch.java.net.URL =O campo {0} deve ser uma URL válida.
typeMismatch.java.net.URI =O campo {0} deve ser uma URI válida.
typeMismatch.java.util.Date =O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Short =O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal =O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger =O campo {0} deve ser um número válido.

...
Tags: Grails


0
Olá Yarkhs,

Eu tive o mesmo problema e alterei a tradução do Lucas Teixeira, inclusive adicionando outras mensagens, pois o arquivo está desatualizado comparando com o messages.properties do Grails:

Quanto ao problema de acentuação veja se este post lhe ajuda:
<!-- m --><a class="postlink" href="http://grailsbrasil.com/viewtopic.php?f=4&amp;t=822">http://grailsbrasil.com/viewtopic.php?f=4&amp;t=822</a><!-- m -->
16/02/2011 00:00


0
Link para códigos de acentos HTML:
http&#58;//www.starr.net/is/type/htmlcodes.html

Minha tradução para o arquivo messages_pt_BR.properties:


#
# Translated by Lucas Teixeira - lucastex@gmail.com
# Updated by Aristeu Sales
#

default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atende ao padrão definido [{3}]
default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é uma URL válida
default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}]
default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}]
default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapass o valor máximo [{3}]
default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação
default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}]
default.blank.message=O campo [{0}] da classe [{1}] não pode ficar em branco
default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message=O campo [{0}] da classe [{1}] não pode ser vazia
default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único

default.paginate.prev=Anterior
default.paginate.next=Próximo
default.boolean.true=True
default.boolean.false=False
default.date.format=dd/MM/yyyy HH&#58;mm&#58;ss z
default.number.format=0

default.created.message={0} {1} criado
default.updated.message={0} {1} alterado
default.deleted.message={0} {1} excluído
default.not.deleted.message={0} {1} não pode ser excluído
default.not.found.message={0} não foi encontrado com o id {1}
default.optimistic.locking.failure=Outro usuário atualizou este {0} enquanto você estava editando

default.home.label=Principal
default.list.label=Lista de {0}
default.add.label=Adicionar {0}
default.new.label=Inserir {0}
default.create.label=Criar {0}
default.show.label=Mostrar {0}
default.edit.labe=Editar {0}

default.button.create.label=Criar
default.button.edit.label=Editar
default.button.update.label=Alterar
default.button.delete.label=Excluir
default.button.delete.confirm.message=Você tem certeza?

# Mensagens de erro em atribuição de valores. Use &quot;typeMismatch.$className.$propertyName&quot; para customizar (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=O campo {0} deve ser uma URL válida.
typeMismatch.java.net.URI=O campo {0} deve ser uma URI válida.
typeMismatch.java.util.Date=O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Short=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido.
16/02/2011 00:00


0
Pelo que vi no link a única solução é por os códigos html. Não gostei desta solução. Vai ser absurdamente trabalhosa.

E meu arquivo já foi alterado tb. Olha só como ficou xD.



#
# Translated by Lucas Teixeira - lucastex@gmail.com
#

default.doesnt.match.message =O campo [{0}] com o valor [{2}] não atende ao padrão definido [{3}]
default.invalid.url.message =O campo [{0}] com o valor [{2}] não é uma URL válida
default.invalid.creditCard.message =O campo [{0}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message =O campo [{0}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message =O campo [{0}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}]
default.invalid.size.message =O campo [{0}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}]
default.invalid.max.message =O campo [{0}] com o valor [{2}] ultrapass o valor máximo [{3}]
default.invalid.min.message =O campo [{0}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message =O campo [{0}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message =O campo [{0}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message =O campo [{0}] com o valor [{2}] não passou na validação
default.not.inlist.message =O campo [{0}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}]
default.blank.message =O campo [{0}] não pode ficar em branco
default.not.equal.message =O campo [{0}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message =O campo [{0}] não pode ser vazia
default.not.unique.message =O campo [{0}] com o valor [{2}] deve ser único

default.paginate.prev=Anterior
default.paginate.next=Próximo

# Mensagens de erro em atribuição de valores. Use &quot;typeMismatch.$className.$propertyName&quot; para customizar (eg typeMismatch.Book.author)
typeMismatch.java.net.URL =O campo {0} deve ser uma URL válida.
typeMismatch.java.net.URI =O campo {0} deve ser uma URI válida.
typeMismatch.java.util.Date =O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long =O campo {0} deve ser um número válido.
typeMismatch.java.lang.Short =O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal =O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger =O campo {0} deve ser um número válido.


default.boolean.true =Verdadeiro
default.boolean.false =Falso
default.date.format =dd-MM-yyyy
default.number.format =0?

default.created.message ={0} {1} criado
default.updated.message ={0} {1} alterado
default.deleted.message ={0} {1} eliminado
default.not.deleted.message ={0} {1} nao eh possivel a exclusao
default.not.found.message ={0} nao encontrado com id {1}
default.optimistic.locking.failure =Outro usuario esta alterando {0} enquanto voce esta editando

default.list.label =Lista de {0}
default.add.label =Adicionar {0}
default.new.label =Inserir {0}
default.create.label =Criar {0}
default.show.label =Mostrar {0}
default.edit.label =Editar {0}
default.home.label =Página principal
default.application.name=Finanças

default.button.create.label =Criar
default.button.edit.label =Editar
default.button.update.label =Alterar
default.button.delete.label =Excluir
default.button.delete.confirm.message =Você tem certeza?


registro.label =Registro
registro.tipo.D =Despesa
registro.tipo.R =Receita
registro.descricao.label =Descrição

periodo.label =Período
periodo.liquido.label =Líquido

relatorio.label =Relatório
relatorio.gastosMensais =Relat&amp;oacute;rio de gastos mensais
16/02/2011 00:00


0
Resolvi uma parte dos problemas. No caso das gsps eu estava definindo o charset dentro da gsp. Isto está errado. O grails tem um arquivo que define o charset para todas as gsps. O arquivo é Config.groovy

Bastou mudar de:

grails.views.gsp.encoding = &quot;UTF-8&quot;
grails.converters.encoding = &quot;UTF-8&quot;

para

grails.views.gsp.encoding = &quot;ISO-8859-1&quot;
grails.converters.encoding = &quot;ISO-8859-1&quot;

Eu havia esquecido deste arquivo. Lembro de ter tido este problema antes e com isso resolveu. Agora o arquivo messages_pt_BR.properties ainda não resolvi. Tenho que arranjar uma maneira de mudar o charset deste arquivo para ISO-8859-1.
16/02/2011 00:00


0
Resolvi o resto do problema. Basta ir no config.groovy na linha:

// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true

e marcar como false. Aí ele não vai converter as letras acentuadas em códigos representando aquele símbolo de &quot;?&quot;.


Nada mais de ficar usando código html. Com estas configs a aplicação reconhecerá todos as letras acentuadas sem problema xD
18/02/2011 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto