EnioWM 2 Denunciar post Postado Setembro 30, 2012 Pessoal, estou com um problema e procurei todas as soluções possíveis e não encontrei. É o seguinte: estou fazendo um select em uma BD Postgres já com a propriedade Encoding = UTF8 configurado, passo os dados para um array ($rows) via pg_fetch_assoc e mando imprimir com um print json_encode($rows, JSON_NUMERIC_CHECK ); . Ainda adicionei um header com charset=utf-8. Segue o código: header('Content-Type: application/json; charset=utf-8'); . . . $result = pg_query($conn, "SELECT * FROM cidades") or die("SERVER_ERROR"); $rows = array(); while($r = pg_fetch_assoc($result)) { $rows[] = $r; } print json_encode($rows, JSON_NUMERIC_CHECK ); O grande problema é que quando abro a página com o json impresso, todos os dados com acentuação aparecem errado dessa forma: [{"id":1,"cidade":"Goi\u00e2nia"},{"id":2,"cidade":"S\u00e3o Paulo"}] Obs: PHP Version 5.3.8 / PostgreSQL 9.1 (x86) Alguém saberia como resolver? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Setembro 30, 2012 está correto.. esse é o formato.. uma dica off header('Content-Type: application/json; charset=utf-8'); troque para plain/text header('Content-Type: plain/text; charset=utf-8'); Compartilhar este post Link para o post Compartilhar em outros sites
EnioWM 2 Denunciar post Postado Setembro 30, 2012 está correto.. esse é o formato.. uma dica off header('Content-Type: application/json; charset=utf-8'); troque para plain/text header('Content-Type: plain/text; charset=utf-8'); Vlw pela ajuda mas nao adiantou, ficou do mesmo jeito. Compartilhar este post Link para o post Compartilhar em outros sites
EnioWM 2 Denunciar post Postado Setembro 30, 2012 Acho que você não entendeu. Não postei uma solução para o suposto problema pois não há um problema. A codificação que você vê na tela, para caracteres especiais, é a codificação normal. Não há o que mexer pois não há erro algum. O segundo comentário foi apenas uma dica, não relacionada ao assunto, para não ter problemas com o content-type. Resolvi comentar pois vi o header que está usando.. só isso.. Acho que você não entendeu. Não postei uma solução para o suposto problema pois não há um problema. A codificação que você vê na tela, para caracteres especiais, é a codificação normal. Não há o que mexer pois não há erro algum. O segundo comentário foi apenas uma dica, não relacionada ao assunto, para não ter problemas com o content-type. Resolvi comentar pois vi o header que está usando.. só isso.. Ah sim. Agora entendi. Vlw pela dica. Mas ainda sim o suposto problema é sim um problema pra mim, pois na tabela no banco de dados está salvo certo, por exemplo São Paulo mas quando o código php pg_query() retorna o valor, mostra de forma errada, por exemplo S\u00e3o Paulo Além da dica você ou alguem saberia o porque não esta com problema? Código: header('Content-Type: plain/text; charset=utf-8');$conn_string = "host=localhost port=5432 dbname=dbname user=user password=pass";$conn = pg_connect($conn_string);$result = pg_query($conn, "SELECT * FROM cidades") or die("SERVER_ERROR");$rows = array();while($r = pg_fetch_assoc($result)) { $rows[] = $r;}print json_encode($rows, JSON_NUMERIC_CHECK ); Retorno: [{"id":1,"cidade":"Goi\u00e2nia"},{"id":2,"cidade":"S\u00e3o Paulo"}] Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 30, 2012 A codificação que você vê na tela, para caracteres especiais, é a codificação normal. Não há o que mexer pois não há erro algum. Além da dica você ou alguem saberia o porque não esta com problema? :seta: RFC 4627 Compartilhar este post Link para o post Compartilhar em outros sites