json_encode e acentuação

3,219 views
Skip to first unread message

Joao Luiz

unread,
Aug 26, 2009, 2:19:43 PM8/26/09
to PHP MG
Tarde,

Estou tentando utilizar json_econde para strings do tipo "Parâmetro"
ou "Configuração".
Não consigo, pois o "â" vira algo como "\u00a2".
Tenho certeza que o problema se deve à função json_encode, pois se
escrever o json na mão, não tenho problemas.

Ex.:

json_encode(array("nome" => "João França")); // Exemplo Saída:
{ "nome": "Jo\u00c3o Fran\u00a2" }

echo "{ \"nome\": \"João França\" }"; // Saída: { "nome": "João
França" }


Alguem sabe como contornar a situação? Já tentei header com charset,
utf8_decode e iconv. O encoding do arquivo é ISO-8859-1.

Edinei Luis Cipriani

unread,
Aug 26, 2009, 2:59:25 PM8/26/09
to ph...@googlegroups.com
SETA UTF8 EM TUDO, QUE VOCE NUNCA MAIS TERA PROBLEMAS COM ACENTUACAO.

Lucas Schirm

unread,
Aug 26, 2009, 3:25:17 PM8/26/09
to ph...@googlegroups.com
recomendo usar utf8_encode para fazer isso, principalmente se estiver utilizando Ajax para trazer as informações, tinha muitos problemas, convertendo os dados via ajax através desta função, normalizou tudo!

2009/8/26 Edinei Luis Cipriani <phpe...@gmail.com>



--
Att,
Lucas Schirm
Desenvolvedor
Realter (http://www.realter.com.br)
E-mail: lucas...@gmail.com
Telefone Com.: 3245-0191
Telefone Part.: 8722-4370

Herberth Amaral

unread,
Aug 26, 2009, 3:40:28 PM8/26/09
to ph...@googlegroups.com
Falando em JSON, eu andei tendo um problema com o encoding nativo do PHP v5.2.9. Eu geralmente uso para serializar arrays, mas ele tava colocando NULLs onde não havia nulls. Pensei que fosse um bug (até tentei postar no trac do PHP, mas é muita burocracia pro meu gosto). Alguem teve ou tem o mesmo problema?

2009/8/26 Lucas Schirm <falkor...@gmail.com>

Guga

unread,
Aug 26, 2009, 3:55:46 PM8/26/09
to ph...@googlegroups.com
/**
 * Convert de ISO para UTF
 */
function utf_iso(&$a){
if (is_array($a)){
foreach ($a as $k => $v) {
      if (!is_array($v)){
      $a[$k] = utf8_decode($a[$k]);
      } else {
      utf_iso($a[$k]);
      }
}
} else {
$a = utf8_decode($a);
}
return $a;
}
/**
 * Convert de ISO para UTF
 */
function iso_utf(&$a){
if (is_array($a)){
foreach ($a as $k => $v) {
      if (!is_array($v)){
      $a[$k] = utf8_encode($a[$k]);
      } else {
      iso_utf($a[$k]);
      }
}
} else {
$a = utf8_encode($a);
}
return $a;
}

---------------------------------------------------------------------
Gustavo Cardoso (71) 8811-7182
Bacharel em Sistemas de Informação
Pós-Graduando em Gerenciamento de Projetos


2009/8/26 Lucas Schirm <falkor...@gmail.com>

Rafael Gomes Dantas

unread,
Aug 26, 2009, 4:23:36 PM8/26/09
to ph...@googlegroups.com
Engraçado isso ser um problema, porque \u00a2 seria um escape equivalente ao seu "â"...

2009/8/26 Joao Luiz <jldru...@gmail.com>

Tales Augusto

unread,
Aug 26, 2009, 6:09:49 PM8/26/09
to ph...@googlegroups.com
Dá uma olhada nesse link:

http://groups.google.com.br/group/listaphp/msg/d740843eb95745bb

Tive problemas com isso eu consegui resolver com base nele. Na época até enviei para o grupo.

Abraço!

2009/8/26 Rafael Gomes Dantas <raf...@gmail.com>



--
Att.
Tales Santos

João Coutinho

unread,
Aug 27, 2009, 6:34:52 PM8/27/09
to PHP MG
Então senhores,
Não pude responder antes.


Obrigado a todos.
A solução foi passar mesmo pra UTF-8.
O problema (imagino) é o encoding dos arquivos + charset do banco +
charset no header.
Ainda não gostei da solução 100%. Vou dar uma pesquisada no link que o
Tales postou e ver se aprimoro a solução.

On 26 ago, 19:09, Tales Augusto <tales.augusto.san...@gmail.com>
wrote:
> Dá uma olhada nesse link:
>
> http://groups.google.com.br/group/listaphp/msg/d740843eb95745bb
>
> Tive problemas com isso eu consegui resolver com base nele. Na época até
> enviei para o grupo.
>
> Abraço!
>
> 2009/8/26 Rafael Gomes Dantas <raf...@gmail.com>
>
>
>
> > Engraçado isso ser um problema, porque \u00a2 seria um escape equivalente
> > ao seu "â"...
>
> > 2009/8/26 Joao Luiz <jldrumm...@gmail.com>
Reply all
Reply to author
Forward
0 new messages