Maison >développement back-end >tutoriel php >Comment gérer les caractères UTF-8 mal formés lors de l'encodage JSON en PHP ?

Comment gérer les caractères UTF-8 mal formés lors de l'encodage JSON en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 08:00:03838parcourir

How to Handle Malformed UTF-8 Characters during JSON Encoding in PHP?

Correction des caractères UTF-8 mal formés lors de l'encodage PHP JSON

Introduction :

JSON est un format de données populaire pour transmettre et stocker des données indépendamment de la plate-forme. Cependant, des problèmes peuvent survenir lors de la tentative d'encodage de données contenant des caractères non UTF-8. Cette discussion aborde un problème courant rencontré lors de l'encodage JSON en PHP, spécifiquement lié aux caractères UTF-8 mal formés.

Problème :

Lors de l'utilisation de json_encode($data) pour coder un tableau contenant un champ avec des caractères russes, une erreur peut survenir en raison de caractères UTF-8 mal formés dans le texte. L'utilisation de mb_detect_encoding() révèle que le champ est correctement codé en UTF-8. Les tentatives d'utilisation de utf8_encode sur les données entraînent un contournement de l'erreur, mais cela compromet l'intégrité des données.

Solution :

Le problème réside dans la présence de non -Caractères UTF-8 dans le texte soi-disant codé en UTF-8. Pour résoudre ce problème, supprimez tous les caractères non UTF-8 du texte, en vous assurant que l'encodage reste cohérent tout au long.

Le code suivant résout efficacement ce problème :

<code class="php">$data['name'] = mb_convert_encoding($data['name'], 'UTF-8', 'UTF-8');</code>

Ce code convertit la valeur de la clé 'name' dans le tableau $data en codage UTF-8, en écrasant tous les caractères non UTF-8 par leurs équivalents UTF-8. Le résultat est une chaîne conforme à UTF-8 qui peut être encodée avec succès au format JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn