Maison > développement back-end > Problème PHP > Que faire si php obtient des données json tronquées

Que faire si php obtient des données json tronquées

PHPz
Libérer: 2023-04-19 09:45:39
original
1191 Les gens l'ont consulté

Avec le développement de la technologie Internet, le développement de sites Web et d'applications mobiles est en plein essor d'année en année, et l'interaction des données en est devenue une partie importante. JSON (JavaScript Object Notation, JavaScript Object Notation) est devenu l'un des formats de données les plus populaires dans le processus d'interaction front-end et back-end en raison de ses avantages en matière de lisibilité, de flexibilité et d'évolutivité. Lors de l'obtention de données JSON en PHP, vous pouvez rencontrer des caractères tronqués. Cet article présentera la solution pour obtenir des données JSON tronquées en PHP.

  1. Codage UTF-8

Le codage UTF-8 est actuellement le système de codage de caractères le plus largement utilisé sur Internet, prenant en charge la représentation de texte dans la plupart des langues. Il existe également des fonctions de codage de caractères correspondantes en PHP. Par exemple, la fonction mb_convert_encoding() peut convertir une chaîne en un codage spécifié. Si vous souhaitez obtenir des données JSON de l'extérieur et les convertir en objet PHP, vous devez d'abord convertir son contenu en codage UTF-8.

Ce qui suit est un exemple de code pour obtenir des données JSON :

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data);
Copier après la connexion

Dans ce code, nous utilisons la fonction file_get_contents() pour obtenir le contenu du fichier JSON distant et le stocker dans la variable $json_data. Par la suite, utilisez la fonction json_decode() pour convertir les données JSON en un objet PHP. Toutefois, si les données JSON contiennent des caractères codés non UTF-8, des caractères tronqués peuvent apparaître pendant le processus de conversion. Nous pouvons spécifier le format d'encodage avant d'obtenir les données, comme :

$json_data = file_get_contents('http://example.com/data.json');
$json_data = mb_convert_encoding($json_data, 'UTF-8');
$decoded_data = json_decode($json_data);
Copier après la connexion

Dans la deuxième ligne de code, nous appelons la fonction mb_convert_encoding() pour convertir les données en encodage UTF-8. De cette façon, les caractères tronqués causés par un encodage incohérent peuvent être évités lors de la conversion en objets PHP.

  1. Définir les en-têtes HTTP

Une autre façon de résoudre le problème des données JSON tronquées obtenues par PHP consiste à spécifier le format de codage des caractères en définissant le contenu de l'en-tête HTTP. Utilisez la fonction header() pour définir les informations d'en-tête HTTP, notamment Content-Type, Content-Disposition, etc. Le champ Content-Type est utilisé pour spécifier le type du corps du message HTTP. Son format de valeur est « type primaire/type secondaire ». Lors du processus de transmission des données JSON, il doit être défini sur « application/json ». Dans le même temps, vous devez également ajouter des instructions d'encodage de caractères dans Content-Type, telles que :

header('Content-Type: application/json; charset=utf-8');
Copier après la connexion

De cette façon, lors de l'obtention des données JSON du serveur, l'encodage sera automatiquement converti en fonction des informations d'en-tête HTTP sans caractères tronqués. .

  1. Utilisez l'option JSON_UNESCAPED_UNICODE

L'option JSON_UNESCAPED_UNICODE peut être utilisée dans PHP 5.4.0 et supérieur. C'est une option qui n'échappe pas aux caractères Unicode lors de la conversion des données JSON. Étant donné qu'en JSON, les caractères non-ASCII doivent être codés en Unicode, les données deviendront verbeuses et difficiles à lire. Ce problème peut être évité si vous utilisez l'option JSON_UNESCAPED_UNICODE. L'exemple de code est le suivant :

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data, false, 512, JSON_UNESCAPED_UNICODE);
Copier après la connexion

Dans la troisième ligne de code, nous passons l'option JSON_UNESCAPED_UNICODE dans la fonction json_decode() pour indiquer que les caractères Unicode ne seront pas échappés pendant le processus de conversion.

Résumé

JSON est un format d'échange de données léger. Il présente les avantages d'une forte lisibilité et d'une grande flexibilité, et est largement utilisé dans le processus d'interaction de données des sites Web et des applications mobiles. Cependant, vous pouvez rencontrer des caractères tronqués lors de l'obtention de données JSON en PHP. Ce problème peut être résolu de plusieurs manières, par exemple en convertissant les encodages de caractères, en définissant les informations d'en-tête HTTP et en utilisant l'option JSON_UNESCAPED_UNICODE. L'objectif ultime est de convertir correctement et complètement les données JSON en objets PHP pour garantir l'exactitude et la stabilité de l'interaction des données front-end et back-end.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal