Maison > développement back-end > Problème PHP > Comment résoudre le problème des caractères tronqués lors de la lecture de mysql utf-8 en php

Comment résoudre le problème des caractères tronqués lors de la lecture de mysql utf-8 en php

PHPz
Libérer: 2023-04-19 13:47:54
original
846 Les gens l'ont consulté

En programmation, nous rencontrons souvent des opérations de lecture de bases de données. MySQL est une base de données relationnelle couramment utilisée, mais des caractères tronqués peuvent apparaître lors du transfert de données avec PHP, notamment lorsqu'il s'agit du cas d'encodage utf-8. Cet article explique comment résoudre le problème de la lecture des caractères tronqués MySQL utf-8 en PHP.

1. Pourquoi des codes tronqués apparaissent-ils ?

Avant de comprendre la solution au problème de code tronqué, comprenons d'abord comment le problème de code tronqué se produit.

  1. Incohérence entre l'encodage de base de données et l'encodage de table

MySQL prend en charge plusieurs encodages, et les bases de données et les tables entre différents encodages ne peuvent pas être connectées de manière transparente. Si l'encodage de la base de données et de la table MySQL est incohérent, des caractères tronqués peuvent apparaître.

  1. Erreur de paramètre d'encodage de connexion à la base de données

Lors de la connexion à la base de données MySQL, vous devez définir l'encodage de connexion. Si le paramètre d'encodage de connexion est incorrect, des caractères tronqués peuvent apparaître lors de la lecture de la base de données.

  1. L'encodage du fichier PHP ne répond pas aux exigences d'encodage utf-8

Les fichiers PHP doivent également utiliser l'encodage utf-8 pour lire le contenu de la base de données MySQL si le fichier PHP ne respecte pas les exigences d'encodage utf-8. pour lire le contenu de la base de données MySQL, des caractères tronqués peuvent apparaître.

2. Solution

Selon les causes des caractères tronqués, nous pouvons résoudre le problème des caractères tronqués utf-8 sous les trois aspects suivants.

  1. Paramètres d'encodage de la base de données et de la table

Tout d'abord, assurez-vous que l'encodage de la base de données MySQL et de la table est cohérent, sinon des caractères tronqués apparaîtront quelle que soit la façon dont vous la configurez. Les paramètres d'encodage doivent être définis lors de la création de bases de données et de tables MySQL. Dans des circonstances normales, l'encodage utf-8 sera sélectionné pour garantir la cohérence de l'encodage de la base de données et des tables MySQL.

  1. Paramètres d'encodage des fichiers PHP

Dans les fichiers PHP, vous devez définir l'encodage du fichier sur utf-8 pour éviter les caractères tronqués.

  1. Lors de la connexion à la base de données MySQL, définissez l'encodage de connexion

Lors de la connexion à la base de données MySQL, vous devez définir l'encodage de connexion sur utf-8 pour vous assurer que le contenu lu est encodé en utf-8. Ce paramétrage est généralement assuré par les frameworks applicatifs, comme le framework Laravel, qui peuvent exécuter le code suivant lors de la lecture de la base de données :

\DB::statement('set names utf8mb4');
Copier après la connexion

Si vous n'utilisez pas de framework, vous devez paramétrer l'encodage de la connexion via le code suivant :

$conn=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_set_charset($conn,"utf8");
Copier après la connexion

Dans le code ci-dessus, utilisez La fonction mysqli_set_charset() définit l'encodage de la connexion.

En plus de l'encodage utf-8 mentionné ci-dessus lors de la configuration de la connexion, vous pouvez également utiliser les instructions suivantes :

SET character_set_connection=utf8mb4;
SET character_set_client=utf8mb4;
SET character_set_results=utf8mb4;
Copier après la connexion

Il convient de noter ici que les instructions ci-dessus doivent être envoyées avant de lire les données.

De plus, si vous utilisez PDO pour vous connecter à la base de données MySQL, vous devez également la configurer. Vous pouvez définir l'encodage utf-8 lors de la connexion à MySQL via le code suivant :

$dbh = new PDO('mysql:host=localhost;dbname=mydb', $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"));
Copier après la connexion

Dans cet exemple, lorsque vous utilisez PDO pour vous connecter à la base de données MySQL, définissez l'encodage de connexion en définissant l'attribut MYSQL_ATTR_INIT_COMMAND sur "SET NAMES utf8mb4".

En bref, afin de garantir que PHP puisse lire correctement le contenu de la base de données MySQL, nous devons considérer simultanément les trois aspects de l'encodage de la base de données, de l'encodage des fichiers PHP et de l'encodage de la connexion pour garantir que leurs méthodes d'encodage sont cohérentes. , afin d'éviter l'apparition du problème utf-8 tronqué.

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