Vadio 13 Denunciar post Postado Julho 26, 2012 pessoal to com problema pra resgatar o dado de um json O problema é o seguinte se não tem acentuação ele retorna na boa.. mas se tem ele retorna null $arr = array("error"=>"Ação desconhecida"); echo json_encode($arr); Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 26, 2012 nunca tive esse tipo de problema.. por precaução até fiz um teste aqui.. o resultado não bate com o que descreveu retorno isso: {"error":"A\u00e7\u00e3o desconhecida"} ambiente php5.3.14 apache 2.2.22 (win 8 preview) referente a mb_internal_encoding deu o mesmo resultado para ISO-8859-1 e UTF-8 certifique-se das configurações mbstring e iconv do seu ambiente ou se não está confundindo algo.. Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Cláudio Pinheiro 4 Denunciar post Postado Julho 26, 2012 Você provavelmente está tentando retorno em uma requisição cujo retorno é dado em UTF-8! Se o seu conjunto de caracteres não for UTF-8, tente o seguinte $arr = array("error"=>utf8_encode("Ação desconhecida")); echo json_encode($arr); Compartilhar este post Link para o post Compartilhar em outros sites
hunternh 2 Denunciar post Postado Julho 26, 2012 Mesmo eu postei uma classe para quem tem esse tipo de problema http://forum.imasters.com.br/topic/470487-json-encode-e-decode-com-suporte-iso/page__pid__1866837#entry1866837 Compartilhar este post Link para o post Compartilhar em outros sites
Raul Barbosa Brito 1 Denunciar post Postado Agosto 9, 2012 Aqui vai uma explicação $arr = array("error"=>"acentu"); echo json_encode($arr); e vai retornar o seguinte objeto json em forma de string: {"error":"acentu"} se você conseguir obter este resultado em uma variável javascript chamada "obj", você vai poder manipular as mesmas informações no lado do cliente, dessa forma: alert(obj.error); As facetas da função json_encode Já vou dar de cara o problema que eu encontrei com esta função: ela não sabe converter símbolos e letras acentuadas em strings para seus códigos respondentes em html. Isso é um problema, pois se a string tiver pelo menos um caracter desse tipo, você terá um retorno inesperado. Vamos a um teste: $array = array("erro"=>"ácentu"); echo json_encode($array); terá o seguinte retorno: {"erro":null} Como você pode observar a função json_encode não reconhece a string inteira, só por causa daquele azinho acentuado. Pode ser que você obtenha outros resultados, dependendo da configuração do seu servidor PHP. Hmm, isso me cheira como problema de codificação, o que você acha? Soulção: aplicando htmlentities em todos elementos com array_map Felizmente, através da poderosa função htmlentities, podemos contornar este problema. Esta função tem a capacidade de converter caracteres especiais (letras acentuadas ou símbolos bizarros) em seus correspondentes códigos html. Já vou dar a solução para o problema em apenas uma linha de código para adiantar: $array = array("erro"=>"ácentu"); $safe = array_map('htmlentities',$array); echo json_encode($safe); Já era. Problema resolvido. Pensamentos finais Vimos aqui rapidamente a funcionalidade da função json_encode para transformar uma array PHP em um objeto JSON. Essa função também aceita um objeto no lugar de array, mas veja que neste caso apenas as propriedades públicas do objeto serão capturados pela função. json_encode é uma ótima ferramenta para quando precisamos transportar informações retiradas de uma tabela no servidor até o javascript, num contexto tipo AJAX. A solução era fácil: só aplicar htmlentities() codificando cada elemento de uma array, passando essa função como callback usando o array_map. Desde já estar ai a minha Ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Agosto 10, 2012 o problema parece estar na má configuração do ambiente no que se refere ao charset encode. se o ambiente estiver bem configurado não precisa fazer conversão usando utf8_encode e pior ainda, usar htmlentities.. Compartilhar este post Link para o post Compartilhar em outros sites