Maison > base de données > tutoriel mysql > Comment gérer correctement les caractères cyrilliques dans MySQL et PHP en utilisant UTF-8 ?

Comment gérer correctement les caractères cyrilliques dans MySQL et PHP en utilisant UTF-8 ?

DDD
Libérer: 2024-12-13 19:36:27
original
370 Les gens l'ont consulté

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

Dépannage MySQL et PHP : caractères cyrilliques en UTF-8 [Dupliquer]

De nombreux développeurs sont confrontés à des défis lors de la gestion des caractères cyrilliques dans les bases de données MySQL à l'aide PHP. Ce problème provient généralement de conflits d'encodage entre la base de données, le code PHP et les jeux de caractères.

Pour résoudre ce problème, une attention méticuleuse doit être accordée à la garantie que l'UTF-8 est utilisé de manière cohérente tout au long du pipeline d'application.

Considérations cruciales :

  • Fichier PHP Encodage : Assurez-vous que votre fichier PHP est enregistré en UTF-8 sans BOM (Byte Order Mark). Vérifiez cela dans les paramètres d'encodage de fichier de votre éditeur.
  • En-tête HTML et PHP : Définissez l'en-tête dans les documents HTML et PHP pour spécifier l'encodage UTF-8 :
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  ...
</head>
<body>
  ...
</body>
</html>
Copier après la connexion
<?php
// At the top of your PHP file, before any output:
header('Content-Type: text/html; charset=utf-8');
?>
Copier après la connexion
  • Paramètres de base de données et de table : Configurez votre base de données MySQL et vos tables individuelles pour utilisez le jeu de caractères UTF-8 avec le classement utf8_general_ci ou utf8_unicode_ci :
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Copier après la connexion
  • mysqli_* Configuration de la connexion : Définissez le jeu de caractères de connexion sur UTF-8 après connection :
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
?>
Copier après la connexion
  • Encodage JSON : Lorsque vous utilisez json_encode(), pensez à appliquer l'indicateur JSON_UNESCAPED_UNICODE pour empêcher la conversion hexadécimale des caractères spéciaux.
  • Conscience des fonctions multi-octets : Reconnaissez que les fonctions standard telles que strtolower() ne peut pas gérer les caractères multi-octets. Utilisez des fonctions spécifiques à plusieurs octets comme mb_strtolower().

Remarques supplémentaires :

  • Distinguer UTF-8 avec un tiret (-) et sans (-). Ils ne sont pas interchangeables. HTML et PHP utilisent UTF-8, tandis que MySQL préfère utf8.
  • Dans MySQL, le jeu de caractères et le classement sont distincts. Définissez les deux sur utf8 et le classement de préférence sur utf8_general_ci ou utf8_unicode_ci.
  • Pour gérer les emojis, MySQL nécessite le jeu de caractères utf8mb4 à la fois dans la base de données et dans la connexion. HTML et PHP utiliseront UTF-8.

Configuration pour mysql_* et PDO :

  • mysql_* :
mysql_set_charset('utf8');
Copier après la connexion
  • PDO :
$pdo = new PDO("mysql:host=localhost;dbname=database;charset=utf8", "user", "pass");
Copier après la connexion

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