Ajax Caracteres Especiais Língua Portuguesa

K0mA

Power Member
TAGS:
AJAX CARACTERES ESPECIAIS LÍNGUA PORTUGUESA PORTUGUÊS
UTF8 iso-8859-1
AJAX JAVASCRIPT PORTUGUESE SPECIAL CHARACTERS UTF8 iso-8859-1

EDIÇÃO 3
Queria partilhar com todos a minha (pouca) experiência com AJAX.

Se algum de vós já se apercebeu do potencial de AJAX e quer usar esta 'linguagem' para textos em português vai-se deparar com um problema de codificação de carateres que, diga-se de passagem, é das coisas que mais detesto em programação.

Quem quiser desenvolver uma simples ferramenta de sugestão como a do google usando caracteres especiais da nossa língua como à ou Ç terá de fazer o seguinte:

Imaginemos que vocês escrevem qualquer coisa numa
Código:
<input type="text" name ="txt">
e que depois, usando AJAX, vão chamar uma função que irá fazer qualquer coisa ao que escreveram (INPUT) e retornar um resultado (OUTPUT) para a página.

A vossa função deverá ter 3 partes:
  1. identificar a entrada (input)
  2. fazer qualquer coisa com a entrada
  3. devolver a saída (output)
EXEMPLO PARA PHP:
  1. Código:
    $q=$_GET["txt"];
  2. ... qualquer coisa ...
  3. Código:
    echo $resposta;
Para que isto funcione com caracteres especiais terão de fazer o seguinte em 1. e 3. :

em 1. adicionar (na linha a seguir)
Código:
$q=utf8_decode($q);
em 2. adicionar (na linha antes)
Código:
$resposta =utf8_encode($resposta);
RESUMINDO: input --> DECODE(input) --> qualquer coisa --> ENCODE(output) --> output

Quando definem a variável url no ficheiro .js têm de codificar a parte que contém caracteres especiais, neste caso era
Código:
?q=str
com str = string de entrada. Usando a função de Javascript encodeURIComponent():

Código:
var url="meuajax.php";
url=url+"?q="+[COLOR=Red]encodeURIComponent(str)[/COLOR];
url=url+"&sid="+Math.random();
PS: este código é disponibilizado sem qualquer garantia de funcionar para todos os casos, para mim funcionou!


TESTADO com firefox 2.0 e IE7
TESTADO com cabeçalho charset=utf-8 e charset=iso-8859-1
TESTADO com caracteres especiais da língua portuguesa como Ç ã ô ... e outros como & < %


Adaptado para caracteres especiais de www.w3schools.com

 
Última edição:
Essa solução só funciona se a página original vier em UTF-8 ...

ou seja, o encode e decode que fazes tem de ser igual ao encoding que foi definido no "head" do html.

Se puseres o encodeing da página como "iso-8859-1", esse método irá gerar caracteres estranhos na visualização.
 
Essa solução só funciona se a página original vier em UTF-8 ...

ou seja, o encode e decode que fazes tem de ser igual ao encoding que foi definido no "head" do html.

Se puseres o encodeing da página como "iso-8859-1", esse método irá gerar caracteres estranhos na visualização.

Acabou de funcionar mesmo agora com o seguinte cabeçalho:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<meta http-equiv="Content-Language" content="pt">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
...
Em firefox funciona, em IE7 não.
Aliás em IE7 nem com cabeçalho nem sem cabeçalho.
 
Última edição:
Acho que, se funciona no firefox, é porque estás a gerar a página em UTF-8, mesmo com o cabeçalho... mas posso estar enganado...

Já agora, só por curiosidade, passa a página no validator, a ver se ele dá um warning em como a tag de encoding não corresponde ao formato enviado.
 
Parou de dar não sei onde mexi !!!!!
EDIT1: Era o cabeçalho em firefox funciona em IE7 é que não :(
EDIT2: Já funciona nos 2 ! (adicionada a correcção na primeira resposta)
EDIT3: Remodelação do tópico e correcções adicionais
 
Última edição:
Back
Topo