Codificar para formato JSON com charset ISO-8859-1

197 views
Skip to first unread message

kicoza...@gmail.com

unread,
Apr 27, 2007, 10:45:24 AM4/27/07
to LISTA PHP
E aí galera.

Em minhas muitas buscas na internet, ainda não consegui achar uma
classe ou função que codifique um array ou objeto PHP para o formato
string JSON com charset ISO-8859-1.

Já testei a função nativa do PHP json_encode() e a classe do PEAR
Services_JSON() e ambas tratam com charset UTF-8 o que detona meus
caracteres especiais.

Alguém já passou por isso e sabe de alguma solução, ou tem alguma
idéia do que eu possa fazer pra conseguir contornar esse problema?

Abraços

Kico Zaninetti
carpe diem

Rafael Siqueira

unread,
Apr 27, 2007, 10:53:19 AM4/27/07
to list...@googlegroups.com
Pq vc não usa tudo em UTF-8? Vai dar muito trabalho?

Se não puder converter para UTF-8, como não estamos falando de gambiarra, vc pode converter apenas os dados para UTF-8 antes de transformá-los em uma string Json e vice-versa. Entendeu?

kicoza...@gmail.com

unread,
Apr 27, 2007, 12:44:14 PM4/27/07
to LISTA PHP
Fala Rafael.

Mudar tudo pra UTF-8 vai ser simplesmente impossível.

Agora me dá um auxílio.

1) Eu tenho a tabela funcionario no MySQL.

2) Eu capturo os dados dessa tabela e jogo dentro de um objeto
funcionario.

3) Eu converto esse objeto em JSON string.

Eu tenho q converter de ISO-8859-1 entre a ação (1) e (2) ou entre a
ação (2) e (3) ??

E como eu faço essa conversão???

Abraços

Kico Zaninetti
carpe diem

On 27 abr, 11:53, "Rafael Siqueira" <raf...@siqueira.ws> wrote:
> Pq vc não usa tudo em UTF-8? Vai dar muito trabalho?
>
> Se não puder converter para UTF-8, como não estamos falando de gambiarra, vc
> pode converter apenas os dados para UTF-8 antes de transformá-los em uma
> string Json e vice-versa. Entendeu?
>

Rafael Siqueira

unread,
Apr 27, 2007, 1:09:32 PM4/27/07
to list...@googlegroups.com
Entre (2) e (3). Para converter é simples, basta usar utf8_encode e utf8_decode (ambos nativo do PHP)

Giovanni Donda - Gmail

unread,
Apr 27, 2007, 2:09:05 PM4/27/07
to list...@googlegroups.com

amigo, faça dessa forma:

$sTexto = iconv("ISO-8859-1","UTF-8", " texto com acentuação");

ai vc faz o encode do json

e quando receber os dados

usa o EVAL do JS


json = eval( "(" + e.responseText +")" );

isso resolve seu problema.......

obs.: passei pelo mesmo problema..........mas usando o prototype e jquery

abraços,
Giovanni



Rafael Siqueira escreveu:

si...@sajnet.com.br

unread,
Apr 30, 2007, 2:09:09 PM4/30/07
to list...@googlegroups.com
No seu js utilize decodeURI[1] ou decodeURIComponent[2]
[]'s

Daniel Martins

unread,
May 3, 2007, 5:32:57 PM5/3/07
to list...@googlegroups.com
Você já tentou utilizar funções Multi-Byte String[1] ?



[1]http://br.php.net/manual/pt_BR/ref.mbstring.php

--
Daniel Martins E. dos Santos
Linux User # 351567 #
http://daniel.jb0.org
"Ciência da computação está tão relacionada aos computadores quanto a Astronomia aos telescópios, Biologia aos microscópios, ou Química aos tubos de ensaio. A Ciência não estuda ferramentas. Ela estuda como nós as utilizamos, e o que descobrimos com elas." (Edsger W. Dijkstra)

Giovanni Donda - Gmail

unread,
May 3, 2007, 7:10:02 PM5/3/07
to list...@googlegroups.com
se vc buscar na lista nos arquivos antigos tem a resposta.............

usando o JSON do PEAR

na hora de gerar o ARRAY

tipo

busca no banco de dados e obtem

$nome[0] = "joão da silva";

vc usa

$nome[0] = iconv( "ISO-8859-1","UTF-8", "joão da silva");

$json->encode($nome)

vai resultar em

{nome:"joão da silva"}

ai vc consegue obter usando no JS

exemplo:

onComplete: function(aObj){
  json = eval( "(" + aObj.responseText + ")" );
  alert( json.nome )
}


tenta isso e nos avisa se der certo.............
Giovanni Donda


Daniel Martins escreveu:
Reply all
Reply to author
Forward
0 new messages