erro de acentuação no firefox


Fórum para dúvidas sobre JavaScript, ECMAScript, AJAX, XML e jQuery.

Moderador: web

Logar para Responder
Logar para Perguntar

 erro de acentuação no firefox
Por impossivel 237 post(s) Offline SUPER VETERANO  Masculino 5p em Seg Jun 18, 2007 1:11 pm



olá, tenho um script que trabalha com ajax, depois de alguma luta foi encontrado uma maneira de corrigir os erros de acentuação.
então o script esta funcionando legal, ate agora...

tenho um campo de busca, que joga o valor pesquisado para um script, este por sua vez executa uma função ajax e carrega uma pagina.php com os resultados da busca. os dados são transferidos por GET, o problema é que no ff esta dando erro, ex. qdo faço uma busca tipo..
céu = céu
são = são
avó = avó
vô = vô
açúcar = açúcar

ja no ie7.0 funciona legal, qdo faço a busca pelo ff ele apresenta os erros, mas estranho que é só no valor enviado com acentos. Qdo nao tem acento no valor enviado, entao não tem erro, mesmo que o resultado da busca contenha acento ele mostra perfeito.

ex, se procurar por .. "fui na casa da vov"
ele encontra e exibe perfeitamente "fui na casa da vovó"
mas se passar o valor "vovó", então dá erro nos acentos. ou seja, o erro esta na transferencia os dados pela GET.

eu pensei em codificar os valores na pagina de pesquisa e decodificar na pagina de resultados, com links eu testei e e funciona, mas no formulário é diferente

function busca(){
// campos do formulário
var valor = document.busca.valor.value;

//executa função que é abrir a página busca.php?valor=xxx(enviado pelo form)
xmlhttp.open('GET','busca.php?valor='+ valor +'');
xmlhttp.onreadystatechange=abc
xmlhttp.send(null)
}
...[continua]

é isto, como o valor é pego pelo formulario nao consigo criptografar ele isto seria o ideal. tem alguma ideia? preciso que o valor pego na pagina busca.php seja perfeito com acentou ou sem acento. Pensei em usar o
base64_encode($valor), mas nao sei como aplicar ele neste script.

consigo decodificar o valor na pagina busca.php, mas so consigo enviar o valor codificado atraves de links, como codifico o valor enviado por get atraves do formulario?

Obs. o erro so acontece esta acontecendo no ff, no ie o valor passa corretamente.



0 mais

7 resposta(s)

 erro de acentuação no firefox
Por web 15316 post(s) Online ADMIN  Masculino 3569p em Seg Jun 18, 2007 8:09 pm


Fiz uns testes aqui, passando via AJAX por GET o seguinte link:
documento.php?valor=açucar

No arquivo documento.php, tenho o seguinte código:
<?php
// pega o navegador
$navegador = $_SERVER['HTTP_USER_AGENT'];

// se navegador for IE
if(strstr($navegador, 'MSIE')==TRUE) {
header("Content-Type: text/html; charset=ISO-8859-1",true);
}

// se navegador for FF
if(strstr($navegador, 'Firefox')==TRUE) {
header("Content-Type: text/html; charset=UTF-8");
}
?>

<?php
echo $_GET['valor'];
?>

0 mais

 erro de acentuação no firefox
Por impossivel 237 post(s) Offline SUPER VETERANO  Masculino 5p em Seg Jun 18, 2007 9:02 pm


oi, fiz vários testes aqui, este script funciona para mostras no navegador, mas a consulta no bd esta sendo feita pelo valor pego na GET e o FF esta passando este valor desconfigurado.

o ideial seria um script em javascript (ele envia a requisição) onde eu pudesse converter alguns caracteres igual ao php

[PHP]
$trans = array('á' => '&aacute;','à' => '&agrave;');

preciso fazer algo parecido aqui

[JAVASCRIPT]

function abre(){

// pega o "valor" no formulario
var valor = document.busca.valor.value;

//o "valor" tem que usar alguma string para substituir os caracteres com acentuação por outros que eu possa desconverter no busca.php, assim ele seria transportado corretamente

xmlhttp.open('GET','busca.php?valor='+ valor +'');

Ex.
á = %E1
ã = %E3
Á = %C1
à = %C3

se pudesse converter estes caracteres neste campo, entao nem preciso me preocupar em desconverter, pois os dois navegadores (IE e FF) reconhecem eles, são padrões.

enfim, o ideal seria isto, converter os caracteres ai ficaria
chá = ch%E1
são = s%E3o
Álvaro = %C1lvaro
SÃO = S%C3O

o ruim é que tem que pegar este caracter do formulario, converter e enviar, sem dar refresh na página, pegar e enviar eu já consigo, agora falta converter.

0 mais

 erro de acentuação no firefox
Por web 15316 post(s) Online ADMIN  Masculino 3569p em Seg Jun 18, 2007 10:23 pm


Vê se essa função ajuda

<script type="text/javascript">
var valor="éóú"
valor = valor.replace(/é/, "É")
.replace(/ó/, "Ó")
.replace(/ú/, "Ú")
document.write(valor)
</script>

0 mais

 erro de acentuação no firefox
Por impossivel 237 post(s) Offline SUPER VETERANO  Masculino 5p em Seg Jun 18, 2007 10:47 pm


blz, agora funciona, ja mando os caracteres especiail de outra forma, aqu ta uma lista caso ais alguem precise

valor = valor.replace(/á/, "%E1")
.replace(/â/, "%E2")
.replace(/ã/, "%E3")
.replace(/Á/, "%C1")
.replace(/Â/, "%C2")
.replace(/Ã/, "%C3")
.replace(/É/, "%C9")
.replace(/é/, "%E9")
.replace(/ê/, "%EA")
.replace(/Í/, "%CD")
.replace(/í/, "%ED")
.replace(/Ó/, "%D3")
.replace(/Ô/, "%D4")
.replace(/Õ/, "%D5")
.replace(/ó/, "%F3")
.replace(/õ/, "%F5")
.replace(/ô/, "%F4")
.replace(/Ú/, "%DA")
.replace(/Ü/, "%DC")
.replace(/ú/, "%FA")
.replace(/ü/, "%FC")
.replace(/ç/, "%E7")
.replace(/Ç/, "%C7")

valeu web, show de bola

0 mais

 erro de acentuação no firefox
Por web 15316 post(s) Online ADMIN  Masculino 3569p em Seg Jun 18, 2007 10:50 pm


boa ¨ohmygod¨

0 mais

 erro de acentuação no firefox
Por impossivel 237 post(s) Offline SUPER VETERANO  Masculino 5p em Qui Jun 21, 2007 1:58 am


olá, ate entao estava resolvido, manda a acentuação em um formato que era interpretado corretamente pelos navegadores, mesmo por GET, sem erro.

porém encontrei uma falha, qdo busca por algum valor cujo caracteres especiais se repetem, ele apresenta erro.
ex. são joão
ai o script nao funciona, agora consegui um outro que praticamente resolve quase tudo isto. Caso mais alguém passe por este problema, vou deixar aqui a solução.

O escape()
Selecionar - Numerar
<script type="text/javascript">
var valor = escape(document.busca.valor.value);
xmlhttp.open('GET','pagina.php?valor='+ valor +'');
...continua

só um problema, tem como enviar codigos html pelo formulario, então o codigo é executado na outra pagina.
se o cara postar <iframe src='sitetal.com.br'></iframe> o site é aberto.

ai pra resolver, usei um comando php na pagina que recebe o valor

$valor = htmlspecialchars($_GET['valor']);

pronto, agora todo tipo de caractere é enviado e nao tem risco de nenhum conflito ou perda de informação na pagina de resposta.
simples, manda usando o "escape()" (javascript) para corrigir a acentuação e recebe usando o "htmlspecialchars" (php) para retirar codigos html que podem ser maliciosos.

0 mais

 erro de acentuação no firefox
Por web 15316 post(s) Online ADMIN  Masculino 3569p em Qui Jun 21, 2007 7:45 am


¨1010¨

0 mais

Resposta Rápida

   


 Busca Dinâmica

Clique em alguma palavra-chave para buscar, ou busque uma frase na caixa de pesquisa a seguir.

erro de acentuação no firefox






Logar para Responder
Logar para Perguntar




Voltar para JavaScript, XML e jQuery

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes