Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EnioWM

Problema com acentuação sql to json

Recommended Posts

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

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

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

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

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.

 

string.gif

 

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.