Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème d'accents de sortie JSON

Cela n'a pas vraiment d'importance. Lorsque le json est décodé, ils redeviennent des caractères.

Si vous utilisez php 5.4>=, vous pouvez passer JSON_UNESCAPED_UNICODE à json_encode :

json_encode( $data, JSON_UNESCAPED_UNICODE )

Mais encore une fois, les échappements unicode fonctionnent tout aussi bien et sécurisent les données ascii.

Modifier :

Il semble que vos données aient déjà été foutues, même avant json_encode . Vous l'avez "double encodé" en utf-8, semble-t-il.

Utilisez-vous quelque chose comme utf8_encode ? Vous n'avez rien à faire dans votre code lorsque vous l'insérez dans votre base de données. Si vous avez inséré les données dans la base de données en utilisant utf8_encode , alors cela explique le double encodage. Tout ce dont vous avez besoin est que les données soient utf-8 et aient mysql_set_charset( 'utf8' ) avant d'insérer.

Il est intéressant de savoir que si votre json a un unicode non échappé, le json ne peut pas être exécuté en tant que javascript même si vous ajoutez des parenthèses si le json contient U+2028 ou U+2029 .