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.
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);
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);
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.
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');
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. .
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);
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!