acentos no retorno Json

2,880 views
Skip to first unread message

Marcelo Florindo

unread,
Sep 20, 2011, 12:38:31 PM9/20/11
to jque...@googlegroups.com
Colegas,

Estou trabalhando com $.ajax(...) e no retorno dos dados o que tiver
acento vem como nulo, preciso fazer alguma configuração no arquivo php
para que os dados venham correto?

Obrigado a todos,

--
Marcelo
---------------------------------------------------------------------------------
Desenvolvedor/Analista
Sites e Sistemas
---------------------------------------------------------------------------------

Felipe Duardo

unread,
Sep 20, 2011, 12:54:05 PM9/20/11
to jque...@googlegroups.com

Rodrigo Cesar Nascimento

unread,
Sep 20, 2011, 1:43:42 PM9/20/11
to jque...@googlegroups.com
cara... o papo é o seguinte. o json só aceita valores que são codados em utf8
do manual:
json

The json string being decoded.

This function only works with UTF-8 encoded data.

então seus dados precisam estar com esse charset. se me permite dou uma dica. eu faço a há muito tempo e nunca tive problema nenhum. tudo utf8: tabelas, páginas e scripts. faça assim e será feliz. =)


2011/9/20 Felipe Duardo <felipe...@gmail.com>



--
[]'s
Rodrigo César Costa do Nascimento
Se queres viver e comer como um cão, podes ir dormir lá para fora. Se queres viver como um ser humano, pega esse hashi! (Pai Mei)

Marcelo Florindo

unread,
Sep 20, 2011, 1:51:09 PM9/20/11
to jque...@googlegroups.com
Então a sacada é usar o header para o utf8 nos arquivos de scripts...

Valeu!.
Marcelo

Em 20 de setembro de 2011 14:43, Rodrigo Cesar Nascimento
<rodr...@gmail.com> escreveu:

Rodrigo Cesar Nascimento

unread,
Sep 20, 2011, 1:57:59 PM9/20/11
to jque...@googlegroups.com
pode ser, caso você precise mesmo apresentar as páginas em ISO, para dar saída use um header no script mesmo.

Suissa

unread,
Sep 20, 2011, 2:08:37 PM9/20/11
to jque...@googlegroups.com
Ja fiz mta conversao dessas pois o sistema q eu estava era td ISO

ae eu dava um escape, eu axo no js e mandava a string po php e la eu dava um rawurldecode, eu axo. E vice-versa.

Testa ae, nao lembro mtoo bem pq ja faz uns 5 anos isso =p

2011/9/20 Rodrigo Cesar Nascimento <rodr...@gmail.com>



--
Jean C. Nascimento aka Suissa
WebDeveloper Sênior - PGS - SP

NoSQL Evangelist - nosqlbr.com.br/
      

XULEPA



Marcelo Florindo

unread,
Sep 20, 2011, 3:23:34 PM9/20/11
to jque...@googlegroups.com
Colegas,

Eu passei o database e as tabelas para uft-8.

Coloquei este código:

    header("Content-Type: text/html; charset=UTF-8    ",true);
    echo json_encode($return);

E nada.....

Continua não aparecendo as palavras com acento.

Qualquer ideia a gente aceita.

Att,

Marcelo

Rodrigo Cesar Nascimento

unread,
Sep 20, 2011, 3:39:25 PM9/20/11
to jque...@googlegroups.com
cara... tu está usando windows? com o DW? se tiver vai em: Modificar > Propriedades da página > Titulo/codificação vê se está utf8, caso não mude pra utf8, aplique no arquivo e mande pro servidor de novo. eu acho que tentar converter assim, na "marra" num vai dar muito certo não. de um ut8_encode() nos dados pra ver qual é. se num der certo eu não sei mais o que fazer... =P hehehe

Marcel Lopes

unread,
Sep 20, 2011, 3:48:05 PM9/20/11
to jque...@googlegroups.com
Tenta isso, acho que resolve...

<?php
function
to_utf8($in)
{
        if (
is_array($in)) {
            foreach (
$in as $key => $value) {
               
$out[to_utf8($key)] = to_utf8($value);
            }
        } elseif(
is_string($in)) {
            if(
mb_detect_encoding($in) != "UTF-8")
                return
utf8_encode($in);
            else
                return
$in;
        } else {
            return
$in;
        }
        return
$out;
}
  header("Content-Type: text/html; charset=UTF-8    ",true);
    echo json_encode(to_utf8($return));

Anderson Aguiar

unread,
Sep 20, 2011, 6:05:46 PM9/20/11
to jque...@googlegroups.com
Velho, dá uma olhada nesse cara: http://php.net/manual/en/function.mb-convert-encoding.php

Já me salvou a vida xD




2011/9/20 Marcel Lopes <msilv...@gmail.com>



--
Att Anderson Aguiar
E-mail: revs...@gmail.com
Twitter: http://twitter.com/andersonaguiar
Skype: anderson.senai
MSN: and-a...@hotmail.com

Marcelo Florindo

unread,
Sep 20, 2011, 8:25:13 PM9/20/11
to jque...@googlegroups.com
Colegas

AProveito aqui para agradecer as indicações. 
Informo que a função que funciona legal para mim foi:

function converte($item)
{
return mb_convert_encoding($item, "UTF-8", "ISO-8859-1");
}

Att,

Marcelo
Reply all
Reply to author
Forward
0 new messages