Mysql
 sql >> Database >  >> RDS >> Mysql

Problema con gli accenti di output JSON

Non importa. Quando il json viene decodificato, diventano di nuovo caratteri.

Se usi php 5.4>=, puoi passare JSON_UNESCAPED_UNICODE a json_encode :

json_encode( $data, JSON_UNESCAPED_UNICODE )

Ma ancora una volta, gli escape unicode funzionano altrettanto bene e rendono i dati ascii sicuri.

Modifica:

Sembra che i tuoi dati siano già stati rovinati, anche prima di json_encode . L'hai "codificato doppiamente" come utf-8 sembra.

Stai usando qualcosa come utf8_encode ? Non devi fare nulla nel tuo codice quando lo inserisci nel tuo database. Se hai inserito i dati nel database usando utf8_encode , questo spiega la doppia codifica. Tutto ciò che serve è che i dati siano utf-8 e abbiano mysql_set_charset( 'utf8' ) prima di inserire.

È interessante sapere che se il tuo json ha unicode senza escape, json non può essere eseguito come javascript anche se aggiungi parentesi se il json contiene U+2028 o U+2029 .