Maison >développement back-end >Problème PHP >Que faire si php json enregistre des caractères chinois tronqués dans la base de données

Que faire si php json enregistre des caractères chinois tronqués dans la base de données

PHPz
PHPzoriginal
2023-04-19 09:17:54729parcourir

Pendant le processus de développement, nous pouvons rencontrer des situations où les données JSON sont stockées dans la base de données. Cela ne pose généralement pas de problème lorsqu'il s'agit de chaînes anglaises, mais lorsque nous impliquons des caractères chinois, nous pouvons rencontrer des caractères tronqués. Cet article explique comment résoudre le problème de confusion JSON qui se produit lors du stockage de caractères chinois dans une base de données MySQL.

  1. Jeu de caractères de la base de données

Tout d'abord, nous devons confirmer si le jeu de caractères de la base de données est correct. Le jeu de caractères par défaut de MySQL est Latin1, qui ne prend pas en charge les jeux de caractères chinois. Si votre encodage n'est pas UTF-8, vous devrez modifier le jeu de caractères de MySQL. Dans la ligne de commande MySQL, entrez la commande suivante pour modifier le jeu de caractères :

SET NAMES 'utf8';

Ensuite, exécutez la commande suivante :

ALTER DATABASE `your_database` CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. Problèmes d'encodage

Un autre problème courant est celui des problèmes d'encodage. Votre éditeur de texte peut utiliser un codage différent de celui du serveur, ou peut utiliser un codage différent de celui de la base de données MySQL. Pour éviter les caractères tronqués, assurez-vous que tous les fichiers utilisent le même encodage. Pour les fichiers php, nous vous recommandons d'utiliser l'encodage UTF-8.

  1. Stocker les données JSON dans la base de données

Pendant le développement, la meilleure façon de stocker les données JSON est de convertir les données en chaîne JSON via la fonction json_encode de PHP, puis de les insérer dans une table de base de données. Pour les caractères chinois, le format de codage UTF-8 est requis.

Ce qui suit est un exemple de code pour stocker des données JSON dans une base de données MySQL :

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//将 JSON 数据转换为字符串
$json_data = json_encode($data, JSON_UNESCAPED_UNICODE);

//插入数据到数据库表中
$sql = "INSERT INTO `table` (`id`, `data`) VALUES (NULL, '$json_data')";
$result = mysqli_query($conn, $sql);

//关闭数据库连接
mysqli_close($conn);
  1. Lire les données JSON

Lorsque vous souhaitez lire les données JSON stockées dans la base de données, vous pouvez utiliser la fonction json_decode de PHP pour convertir la chaîne JSON. en Convertir en tableau ou objet PHP. Notez que lors de l'utilisation de json_decode, le deuxième paramètre doit être défini sur true pour garantir que les données sont renvoyées sous forme de tableau plutôt que d'objet.

Ce qui suit est un exemple de code pour lire les données JSON à partir d'une base de données MySQL :

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//查询数据库
$sql = "SELECT `data` FROM `table` WHERE id = '1'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

//将 JSON 字符串转换为 PHP 数组
$json_data = json_decode($row['data'], true);

//关闭数据库连接
mysqli_close($conn);

Résumé :

Lors du stockage des données JSON, assurez-vous que le jeu de caractères de la base de données est UTF-8, que l'éditeur de texte utilise le format d'encodage correct et utiliser PHP La fonction json_encode convertit les données en une chaîne JSON. Lors de la lecture de données JSON, utilisez la fonction json_decode de PHP pour convertir la chaîne JSON en tableau PHP.

Voici quelques conseils pour résoudre le problème de confusion JSON qui se produit lors du stockage de caractères chinois dans une base de données MySQL. Nous espérons que ces conseils vous seront utiles.

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