erro de acentuação no firefox

Fórum sobre: JavaScript, XML, AJAX e jQuery
Assista o vídeo    Busque no Youtube
Avatar do usuário
impossivel
SUPER VETERANO
SUPER VETERANO
Mensagens: 237
Registrado em: Qui Mar 22, 2007 1:38 PM
Localização: Florianópolis/SC
Contacto:

erro de acentuação no firefox

Mensagempor impossivel » 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

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

function busca(){
// campos do formulário
var valor = document.busca.valor.value;
 
//executa função que é abrir a página busca.php?valor=..(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.
MIDZ.com.br
http://www.midz.com.br
Soluções Web
0

web
ADMIN
ADMIN
Mensagens: 15862
Registrado em: Sáb Jan 20, 2007 6:08 PM
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contacto:

erro de acentuação no firefox

Mensagempor web » 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:

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

<?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");
}

echo 
$_GET['valor'];
?>
Se gostou do conteúdo, participe e divulgue.
0

Avatar do usuário
impossivel
SUPER VETERANO
SUPER VETERANO
Mensagens: 237
Registrado em: Qui Mar 22, 2007 1:38 PM
Localização: Florianópolis/SC
Contacto:

erro de acentuação no firefox

Mensagempor impossivel » 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

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

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

preciso fazer algo parecido aqui

JAVASCRIPT

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

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.
MIDZ.com.br
http://www.midz.com.br
Soluções Web
0

web
ADMIN
ADMIN
Mensagens: 15862
Registrado em: Sáb Jan 20, 2007 6:08 PM
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contacto:

erro de acentuação no firefox

Mensagempor web » Seg Jun 18, 2007 10:23 PM

Vê se essa função ajuda

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

<script type="text/javascript">
var valor="éóú"
valor = valor.replace(/é/, "É")
.replace(/ó/, "Ó")
.replace(/ú/, "Ú")
document.write(valor)
</script>
Se gostou do conteúdo, participe e divulgue.
0

Avatar do usuário
impossivel
SUPER VETERANO
SUPER VETERANO
Mensagens: 237
Registrado em: Qui Mar 22, 2007 1:38 PM
Localização: Florianópolis/SC
Contacto:

erro de acentuação no firefox

Mensagempor impossivel » 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

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

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
MIDZ.com.br
http://www.midz.com.br
Soluções Web
0

web
ADMIN
ADMIN
Mensagens: 15862
Registrado em: Sáb Jan 20, 2007 6:08 PM
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contacto:

erro de acentuação no firefox

Mensagempor web » Seg Jun 18, 2007 10:50 PM

boa ¨ohmygod¨
Se gostou do conteúdo, participe e divulgue.
0

Avatar do usuário
impossivel
SUPER VETERANO
SUPER VETERANO
Mensagens: 237
Registrado em: Qui Mar 22, 2007 1:38 PM
Localização: Florianópolis/SC
Contacto:

erro de acentuação no firefox

Mensagempor impossivel » 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()

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

<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

Código: Selecionar todos   Testar HTML   Testar PHP   Testar MySQL   Como Funciona

$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.
MIDZ.com.br
http://www.midz.com.br
Soluções Web
0

web
ADMIN
ADMIN
Mensagens: 15862
Registrado em: Sáb Jan 20, 2007 6:08 PM
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contacto:

erro de acentuação no firefox

Mensagempor web » Qui Jun 21, 2007 7:45 AM

¨1010¨
Se gostou do conteúdo, participe e divulgue.
0


OS MAIS RECENTES

COMENTÁRIOS
Ainda não há comentários. Seja o primeiro!

COMENTAR


Voltar para “JavaScript, XML e jQuery”

Quem está online

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

cron
Rolar para o topo