| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/09/2009 19:41:52
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/09/2009 20:10:41
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/09/2009 20:34:50
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2009 02:03:16
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2009 11:22:48
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2009 12:51:33
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
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
|
|
|
 |
|
|