Dans le développement de sites multilingues, la gestion du codage des personnages est un problème très important. Différentes langues et régions peuvent utiliser différents ensembles de caractères, et si le codage des caractères n'est pas réglé correctement, le contenu du site peut apparaître brouillé ou ne peut pas être affiché correctement. PHP fournit une extension MySQLI pour faire fonctionner une base de données MySQL. Dans cette extension, la fonction mysqli :: get_charset peut nous aider à obtenir le jeu de caractères de la connexion de la base de données actuelle.
Dans cet article, nous discuterons de la façon d'utiliser la fonction mysqli :: get_charset pour gérer uniformément le codage des caractères et nous assurer que le contenu dans différentes langues est affiché correctement dans un site multilingue.
Le codage des caractères est le moyen de mapper les caractères à une séquence d'octets. Dans les sites multilingues, il est important de configurer le codage de caractères correct, en particulier lorsque le site prend en charge plusieurs langues. Les codages de caractères communs incluent UTF-8, ISO-8859-1, GBK, etc. UTF-8 est un codage de caractères largement utilisé qui prend en charge les caractères dans presque toutes les langues.
Dans les sites multilingues, différentes langues peuvent utiliser différents jeux de caractères. Si nous n'avons pas de gestion unifiée de codage de caractère, nous pouvons rencontrer les problèmes suivants:
Le contenu affiche du code brouillé
Les caractères sont corrompus lorsque la base de données est stockée
Le contenu affiché sur la page est incohérent
Pour s'assurer que le contenu s'affiche correctement entre différentes langues, il est nécessaire de s'assurer que la base de données et les pages frontales utilisent le même codage de caractères.
Dans PHP, l'extension MySQLI fournit une interface pratique pour connecter et faire fonctionner les bases de données MySQL. La fonction mysqli :: get_charset renvoie le jeu de caractères de la connexion de la base de données actuelle. Nous pouvons l'utiliser pour nous assurer que le codage des caractères de la connexion de la base de données et de la page est cohérent, évitant ainsi le problème brouillé.
Lors de la connexion à une base de données MySQL, nous devons explicitement définir le codage des caractères sur UTF-8 pour nous assurer que les caractères de toutes les langues sont pris en charge. Vous pouvez le faire avec le code suivant:
<?php
// créer MySQLi Connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database_name");
// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
// Définissez le jeu de caractères sur UTF-8
if (!$mysqli->set_charset("utf8")) {
printf("erreur:Impossible de charger le jeu de caractères utf8: %s\n", $mysqli->error);
exit();
}
// Vérifiez le jeu de caractères actuellement connecté
echo "Jeu de caractères actuel: " . $mysqli->get_charset()->charset;
?>
Le code ci-dessus termine les tâches suivantes:
Connectez-vous à la base de données.
Définissez le jeu de caractères sur UTF-8 pour vous assurer que toutes les entrées et sorties sont codées à l'aide de l'UTF-8.
Utilisez MySQLI :: Get_Charset pour obtenir le jeu de caractères actuel et le sortir.
Après avoir veillé à ce que les caractères de la base de données soient codés sous forme UTF-8, nous devons également nous assurer que les pages frontales utilisent également le même codage. Vous pouvez spécifier le codage des caractères via des balises Meta dans la page HTML, comme indiqué ci-dessous:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site multilingue</title>
</head>
<body>
<h1>欢迎访问我们的Site multilingue!</h1>
<!-- Autre page Contenu -->
</body>
</html>
Ici, Meta Charset = "UTF-8" est utilisée pour dire à la page du navigateur d'utiliser le codage des caractères UTF-8, afin de s'assurer que le contenu dans différentes langues tels que le chinois et l'anglais peut être affiché correctement.
Dans les sites multilingues, le contenu correspondant est généralement obtenu à partir de la base de données en fonction du langage sélectionné par l'utilisateur. Si le codage de caractère de la base de données et de la page est cohérent, il n'y aura aucun problème à obtenir et à afficher ces contenus.
Par exemple, nous pouvons utiliser le code suivant pour obtenir du contenu multilingue à partir de la base de données:
<?php
// Hypothèses $mysqli C'est déjà connecté MySQLi Exemple
// Obtenez du contenu de la page chinoise
$query = "SELECT title, content FROM pages WHERE language = 'zh' LIMIT 1";
$result = $mysqli->query($query);
if ($result) {
$row = $result->fetch_assoc();
echo "<h1>" . htmlspecialchars($row['title']) . "</h1>";
echo "<p>" . nl2br(htmlspecialchars($row['content'])) . "</p>";
} else {
echo "La requête a échoué: " . $mysqli->error;
}
?>
Dans cet exemple, la fonction HTMLSpecialChars est utilisée pour sortir en toute sécurité le contenu de la base de données vers la page, empêchant les attaques XSS.
En utilisant MySQLI :: get_charset et mysqli :: set_charset , nous pouvons nous assurer que le codage des caractères est géré uniformément dans des sites multilingues, en évitant les problèmes brouillants et afficher. N'oubliez pas de définir le jeu de caractères correct lors de la connexion à la base de données et assurez-vous que le codage des caractères de la page frontale est cohérent. De cette façon, les utilisateurs peuvent voir le contenu correct, quelle que soit la langue qu'ils visitent le site.