Sto chiamando json_encode()
su dati che provengono da un database MySQL con fascicolazione utf8_general_ci
. Il problema è che alcune righe hanno dati strani che non riesco a pulire. Ad esempio il simbolo �
, quindi, una volta raggiunto json_encode()
, non riesce con json_encode(): Invalid UTF-8 sequence in argument
.json_encode(): sequenza UTF-8 non valida nell'argomento
Ho provato utf8_encode()
e utf8_decode()
, anche con mb_check_encoding()
ma continua a subire e causare caos.
Esecuzione di PHP 5.3.10 su Mac. Quindi la domanda è: come posso ripulire i simboli utf8 non validi, mantenendo il resto dei dati, in modo che json_encoding()
funzioni?
. Ecco un modo per riprodurlo:
echo json_encode(pack("H*" ,'c32e'));
Sei sicuro di voler recuperare i dati codificati in UTF-8 dal database? Che dati hai, cosa ti aspetti? Mostraci un 'bin2hex' dei dati problematici. – deceze
bin2hex fornisce c32e –
'" \ xC3 \ x2E "' non è una stringa UTF-8 valida. da dove viene? MySQL non deve produrre stringhe UTF-8 non valide se è impostato per restituire UTF-8. – deceze