Sto utilizzando quasi l'ultima versione di php (5.5.11) e qui è il problema. Quando uso json_encode
della parte della stringa, restituisce false. All'inizio stavo usando substr
, ma poi ho capito che questo è totalmente sbagliato quando si tratta di stringhe non inglesi. Ma anche dopo che ho usato mb_substr
vedo ancora che json_encode
restituisce false
:json_encode restituisce false quando si tratta di sottostringa multibyte
$s = "に搭載されるようになると、その手軽さからJは急速に普及していく。、通信に関する標準を策定する国際団体インターナショナル";
$a = mb_substr($s, 0, 10);
Come si vede,
var_dump(json_encode([
'd' => $a
]));
restituisce false
, e
var_dump(json_encode([
'd' => $s
]));
restituisce corretta JSON.
Quando si esamina json_last_error, vedo che questo è dovuto a Malformed UTF-8 characters, possibly incorrectly encoded
. Quindi il problema è che mb_substr mi dà caratteri malformati.
Quando guardo var_dump($a);
vedo che produce string(10) "に搭載�"
(presumo che ogni carattere giapponese sia 3 byte e che il punto interrogativo sia un carattere non valido).
Quindi, come posso ottenere una sottostringa dalla stringa in modo tale da non ottenere una stringa malformata?
Se che ha risolto il problema, non implica il vostro 'mb_internal_encoding' non è impostato su 'utf-8'? La corretta impostazione della codifica interna non sarebbe una soluzione migliore? –