AnswerBun.com

Json_econde erro ao parsear caracteres especiais vindos do banco ( usando PDO mysql)

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?

One Answer

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

Add your own answers!

Related Questions

Como gerar 10 vezes números aleatórios sem ser repetidos, com loop?

1  Asked on November 10, 2021 by thaina-lopes

 

Baixar arquivo setando o header

1  Asked on November 10, 2021 by joo-silva

   

Ancestrais em Prolog

0  Asked on November 10, 2021 by juliano

 

Vários Select Sum com parametros de tabelas relacionadas

1  Asked on November 10, 2021 by ale_moraes

   

Eu posso setar o else para fazer duas coisas?

1  Asked on November 8, 2021 by luccadgf

     

Filtrar arquivo específico para não excluir

3  Asked on November 8, 2021

     

Qual a diferença entre essas formas de execução de comando?

1  Asked on November 8, 2021 by rebeca-nonato

     

Cannot read property ‘data’ of undefined

1  Asked on November 8, 2021 by oitathi

       

Pausar um for para executar uma solicitação

1  Asked on November 7, 2021 by ricardo-jardim-braz

   

Remover números anterior a vírgula

1  Asked on November 7, 2021 by enio-amarantes

   

Retornar coluna especifica com a biblioteca csv

1  Asked on November 7, 2021 by esabin

   

Como converter UNIQUEIDENTIFIER para INT?

1  Asked on November 7, 2021 by bruno-taletti

     

Como da um display Block ao rolar a pagina

1  Asked on November 7, 2021

     

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved.