Stack Overflow em Português Asked by Israel Zebulon on December 30, 2020
Numa tabela do banco existem palavras acentuadas ou com ç .
Ao usar o json_encode no php para enviar o resultado para a view, o json quebra devido o erro no parser.
Qual a melhor maneira de tratar esses caracteres antes de chamar o json_encode?
Exemplo de como retorna do banco. Esses objetos devem ser parseados para json.
[0] => Array
(
[usuario_nome] => Oliveira Souza
)
[1] => Array
(
[usuario_nome] => jão çávão
)
[2] => Array
(
[usuario_nome] => joao josjdsojd
)
Consegui passar os dados da seguinte maneira:
$sth = $conn->query("SELECT * FROM v_usuarios where usuario_ativo = 'S' $condicao order by usuario_nome ASC");
$sth->execute();
$datas = array();
while($data = $sth->fetchAll(PDO::FETCH_ASSOC))
array_push($datas,json_encode($data, JSON_UNESCAPED_UNICODE));
$retorno =new Response(($datas[0]));
$retorno->headers->set('Content-Type','application/json; charset=utf-8');
return $retorno;
Mas existiria alguma forma melhor?
Amigo, já tive muito desses problemas e não é fácil resolvê-lo, mas tentarei te ajudar.
function utf8_converter($array)
{
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)){
$item = utf8_encode($item);
}
});
return $array;
}
Nesse método, você chamando e colocando seu array dentro do parâmetro ele faz um loop no seu array através de cada elemento e converte para UTF-8. Na maioria das vezes pode funcionar, porém há exceções. Espero ter ajudado.
Answered by fabionvs on December 30, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP