Encoding: Tudo está ISO-8859-1, cliente só manda UTF-8  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

Tenho uma página de pesquisa, com um campo para digitar a string que o usuário quer procurar.

Dados:

O código-fonte está em ISO-8859-1, o projeto está compilado (do zero, apagando os arquivos) em ISO-8859-1, e o Firefox 3.5 reporta a página como encoding ISO-8859-1. Tudo que consigo imaginar está nesse encoding.

Porém, se eu digito álcool, eu recebo no request um busca=%C3%A1lcool, e ele imprime áLcool.

C3A1 é o hexadecimal em UTF-8 para o caracter á. C3 e A1 em ISO-8859-1 são os caracteres à e ¡(exclamação ao contrário) respectivamente.

Testo usando o Windows Vista, e o resultado é o mesmo tanto no Firefox quanto no IE8.

A pergunta é, por que ainda estou recebendo UTF-8 do cliente, quando aponto tudo para um outro encoding? Poderia tratar isso na servlet, forçando o valor obtido para UTF-8, mas o que me dirá que o cliente mandará nesse formato?

This message was edited 2 times. Last update was at 03/09/2009 19:43:09


A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

Oi Bruno!

O que o request.getCharacterEncoding() retorna? Se for null, seta na mao pra 8859-1 num filtro antes de ler qualquer parametro. Eu chutaria que voce esta usando o jetty...

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

É, deu null mesmo. Estranho que até hoje nunca deu isso. (o problema, não esse nulo, nunca percebi pelo menos)

Sobre a aposta: OC4J 10.1.2 (ugh)

Pronto, criei um filtro, mapeei p/ *, setei na mão um request.setCharacterEncoding("ISO-8859-1");, verifiquei que ele passa por ele realmente seta o atributo.

Eeeeee....

(rufem os tambores)

.
..
...
Não deu certo.


Edit:

E minutos depois percebo que deveria setar como UTF-8!!
E...

(rufem os tambores)

.
..
...
Não deu certo.

Tsk, vou pra casa.

This message was edited 2 times. Last update was at 03/09/2009 20:41:11


A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

busca=%C3%A1lcool ta aparecendo na url do browser/post snifado? entao ai o problema é totalmente firefox/html, ja que ele é queme sta enviando utf-8.

This message was edited 1 time. Last update was at 04/09/2009 02:03:29


http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

Ok, atualização:

Estou usando o Prototype 1.5.1_rc3 para mandar as requisições via GET.

Debugando ele, para encodar os componentes da URL usa um método nativo dos navegadores, encodeURIComponent. De acordo com a documentação do MDC, ele encoda os caracteres em UTF-8, mesmo que na documentação do Protype Ajax.Options haja um atributo encoding (cujo padrão também é UTF-.

Não sei se é problema dessa versão ou não, não vou checar. Provavelmente ele só muda o charset encoding do request, que parece que o servidor ignora completamente.

Então já que o getParameter está convertendo a requisição escapada em UTF-8 para ISO-8859-1, eu converto de volta:


Não estou muito satisfeito, mas quebra o galho.

This message was edited 1 time. Last update was at 04/09/2009 11:23:31


A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

bruno, sems er via ajax, um input field comum, ai vai certo? se for o culpado esta sendo o prototype!


http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team