Maison >développement back-end >tutoriel php >Comment gérer correctement les caractères cyrilliques dans MySQL et PHP avec l'encodage UTF-8 ?

Comment gérer correctement les caractères cyrilliques dans MySQL et PHP avec l'encodage UTF-8 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-12 18:07:09506parcourir

How to Properly Handle Cyrillic Characters in MySQL and PHP with UTF-8 Encoding?

MySQL et PHP : caractères cyrilliques avec encodage UTF-8

Lorsque vous essayez de stocker du texte cyrillique dans une base de données MySQL, il est crucial de garantir un encodage de caractères approprié pour éviter les données. corruption. Le problème que vous avez rencontré est probablement lié à une incompatibilité d'encodage de caractères entre PHP et MySQL.

Pour résoudre ce problème, vous devez vérifier que chaque aspect de votre script PHP et de la configuration de votre base de données est spécifié avec l'encodage UTF-8. Voici les facteurs clés à prendre en compte :

  • Encodage de fichiers PHP : Enregistrez le script PHP au format UTF-8 sans BOM (Byte Order Mark).
  • En-tête HTML : Spécifiez le jeu de caractères comme UTF-8 dans le fichier HTML tag.
  • Encodage de sortie PHP : Utilisez header('Content-Type: text/html; charset=utf-8') pour définir l'encodage de sortie sur UTF-8.
  • Encodage de la base de données et des tables MySQL : Modifiez les jeux de caractères de la base de données et de la table en utf8, à l'aide de ALTER DATABASE et les commandes ALTER TABLE.
  • Connection-Object Charset : Définissez le jeu de caractères de l'objet de connexion mysqli sur UTF-8 avec mysqli_set_charset($conn, 'utf8').
  • Encodage JSON : Si vous utilisez json_encode(), pensez à utiliser le Indicateur JSON_UNESCAPED_UNICODE pour empêcher la conversion des caractères en hexadécimal.

De plus, n'oubliez pas que tous les composants de votre application, y compris HTML, PHP et MySQL, doivent utiliser des paramètres d'encodage cohérents. Si une étape n'est pas synchronisée, des problèmes de caractère peuvent survenir.

Remarque :

  • UTF-8 avec un tiret (utf-8) est utilisé dans HTML et PHP, tandis que UTF-8 sans tiret (utf8) est utilisé dans MySQL.
  • Le classement est différent du jeu de caractères dans MySQL. Les deux doivent être définis sur utf8. Le classement doit être soit utf8_general_ci, soit utf8_unicode_ci.
  • Pour les emojis, utilisez le jeu de caractères utf8mb4 au lieu de utf8 dans MySQL.

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