PHP json_encode json_decode UTF-8

Como posso salvar uma string codificada com json com caracteres internacionais na base de dados e, em seguida, analisar a seqüência descodificada no navegador?

     

Este é um problema de codificação. Parece que em algum momento, os dados são representados como ISO-8859-1.

Cada parte do seu processo precisa ser codificada em UTF-8.

  • A conexão do database

  • As tabelas do database

  • Seu arquivo PHP (se você estiver usando caracteres especiais dentro desse arquivo como mostrado em seu exemplo acima)

  • Os headers de content-type que você exibe

json utf8 codifica e decodifica:

 json_encode($data, JSON_UNESCAPED_UNICODE) json_decode($json, false, 512, JSON_UNESCAPED_UNICODE) 

Força utf8 também pode ser útil: http://pastebin.com/2XKqYU49

  header('Content-Type: application/json; charset=utf-8'); 

Se o seu arquivo de origem já é utf8, solte as funções utf8_ *. php5 está armazenando strings como matriz de byte.

você deve adicionar uma meta tag para codificação dentro do html E você deve adicionar um header HTTP que define a codificação de transferência para utf-8.

    

e em php

 < ?php header('Content-Type: text/html; charset=utf-8'); 

Tente enviar o header UTF-8 Charset:

 < ?php header ('Content-type: text/html; charset=utf-8'); ?> 

E o meta HTML:

  
  1. utf8_decode $j_decoded = utf8_decode(json_decode($j_encoded)); EDITAR ou ser mais correto $j_encoded = json_encode($j_encoded); $j_decoded = json_decode($j_encoded); não há necessidade de en / decodificação utf8

Se você receber um erro de “Caráter inesperado”, verifique se existe uma BOM (Marcador de Ordem de Byte salvo em seu jf utf-8. Você pode remover o primeiro caractere ou salvar se sem BOM.

Trabalhe para mim 🙂

 function jsonEncodeArray( $array ){ array_walk_recursive( $array, function(&$item) { $item = utf8_encode( $item ); }); return json_encode( $array ); }