UTF-8 não funciona em webservice PHP?

Eu criei um WebService simples, está funcionando, mas por algum motivo, o retorno dele não está vindo em UTF-8.

Código:

<?php
 require_once "connect.php";

 $query = "SELECT nome FROM rifas_vendidas UNION SELECT nome FROM lanches_vendidos;";
 $statement = $con->prepare($query);
 $statement->execute();
 while($row = $statement->fetch(PDO::FETCH_OBJ)){
 	print($row->nome.",");
 }
?>

Observações:

  • Eu já tentei colocar header('Content-Type: text/html; charset=utf-8');em todas as partes do código. Já tentei fazer com a tag meta do HTML.

  • O meu banco de dados e as minhas tabelas estão configurados para utilizar dados UTF-8.

Alguém tem uma sugestão?

Não sei se é exatamente o problema, mas pra começar notei a falta do json_encode no seu código. Não precisa fazer o json na mão. Exemplo: http://stackoverflow.com/questions/2770273/pdostatement-to-json

1 curtida

Boa observação. Mas o problema não é esse. Eu também não vou retornar os dados em JSon, já que ambas tabelas só tem uma coluna. Prefiro só pegar uma lista separada por uma virgula mesmo.

Primeiro, parabéns por ter decidido usar web service, e seu código está bem enxuto sem parafernálias. Mas sobre não usar json, por que ser diferente se existe um formato que todo mundo entende? json_encode trabalha com UTF-8. Ao menos estará num caminho que a maioria passa, senão fica naquele ciclo que você passou em querer se conectar remotamente ao MySql.

Simplesmente porque eu acho desnecessário. E adicionaria mais umas três linhas na minha classe de comunicação com os webservice, sendo que o projeto já está pronto. Eu teria que modificar tudo. E é realmente desnecessário eu ter que usar Gson por exemplo, já que eu só quero pegar uma listinha. Mas se tu diz que json_encode já faz em UTF-8, eu posso adaptar o código. Mas me diz ae, não tem outra função como essa que trás os dados da forma que eu quero?

Tenta setar o charset na sua string de conexão:

(a forma de fazer depende da versão do PHP como falaram lá)

1 curtida

Muito obrigado, é exatamente o que eu precisava.