quinta-feira, 12 de agosto de 2010

JavaScriptzada

Estava a integrar um portal noutro, quando me deparei com um problema estranho. A codificação de caracteres acentuados em URLs para pesquisa era diferente se a pesquisa fosse feita fora do portal integrador, ou feita dentro.

Basicamente o problema resume-se ao JavaScript e ao uso das funções escape ou encodeURIComponent. A função escape vem dos primórdios do JavaScript, enquanto a função encodeURIComponent vem do JavaScript 1.5. Basicamente o URL dado pelas duas funções irá ser diferente.

Por exemplo, a palavra região dá origem, de acordo com a função usada:
  • regi%E3o, se usar escape
  • regi%C3%A3o, se usar encodeURIComponent
O portal integrador, usa a função encodeURIComponent enquanto o integrado usa escape, dando origem ao problema.

Para uma comparação entre as duas funções e mais a encodeURI ver:
http://xkr.us/articles/javascript/encode-compare