Un jeu de caractères est un système utilisé par les ordinateurs pour stocker des caractères qui mappent les caractères à des valeurs codées spécifiques. L'encodage est un moyen de convertir des caractères dans le jeu de caractères en données binaires. Les jeux de caractères communs incluent UTF-8, GBK, ISO-8859-1, etc.
Dans les sites Web multilingues, le codage UTF-8 est généralement choisi car il prend en charge presque tous les caractères de la langue et a une bonne compatibilité. UTF-8 est un codage de caractères de longueur variable qui peut représenter presque tout le texte du monde.
Le codage des caractères entre la base de données et le PHP doit être cohérent, sinon des codes brouillés ou des informations perdues peuvent se produire pendant la transmission des données. Par exemple, si la base de données utilise le codage UTF-8 et PHP ne définit pas le codage des caractères correctement lors de la connexion à la base de données, il peut faire apparaître le contenu chinois stocké dans la base de données comme brouillé sur le site Web.
MySQLI :: Set_Charset est conçu pour garantir la cohérence du codage des caractères entre les bases de données PHP et MySQL. En utilisant cette méthode, nous pouvons configurer la connexion de la base de données MySQL pour utiliser un jeu de caractères spécifique après nous connecter à la base de données, évitant ainsi les problèmes d'affichage causés par un codage incohérent.
L'utilisation de la méthode MySQLI :: set_charset est très simple. En supposant que nous nous sommes connectés à la base de données MySQL via MySQLI , voici les étapes pour définir le jeu de caractères sur UTF-8.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Créer une connexion de base de données</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez si la connexion réussit</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// Définissez le jeu de caractères sur UTF-8</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8"</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"erreur:Impossible de définir le jeu de caractères %s\n"</span></span><span>, </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
</span><span><span class="hljs-keyword">exit</span></span><span>();
}
</span><span><span class="hljs-comment">// Effectuer des requêtes de base de données et d'autres opérations...</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans le code ci-dessus, $ mysqli-> set_charset ("utf8") définit le jeu de caractères de la connexion de la base de données à UTF-8. Cela garantit que les données lues ou écrites à partir de la base de données peuvent être correctement traitées comme un codage UTF-8, en évitant les problèmes brouillés.
Les sites Web multilingues stockent généralement du contenu en plusieurs langues, comme le chinois, l'anglais, le japonais, etc. Pour s'assurer que ces contenus de langue peuvent être affichés correctement, le jeu de caractères de la base de données et le jeu de caractères de la connexion PHP doivent correspondre. Nous pouvons définir MySQLI :: SET_CHARSET dans le code de connexion de la base de données de PHP pour assurer un codage cohérent. De plus, le jeu de caractères doit être défini dans la page frontale. Habituellement, le jeu de caractères est spécifié comme UTF-8 en définissant la balise <méta> de HTML:
<span><span><span class="hljs-tag"><<span class="hljs-name">meta</span></span></span><span> </span><span><span class="hljs-attr">charset</span></span><span>=</span><span><span class="hljs-string">"UTF-8"</span></span><span>>
</span></span>
De cette façon, la page frontale analyse également le contenu selon le codage UTF-8, garantissant ainsi que les caractères dans diverses langues peuvent être affichés normalement.
Pour s'assurer que les données peuvent stocker correctement les caractères dans différentes langues de la base de données, il est nécessaire de s'assurer que les tables et les champs de la base de données sont codés à l'aide de l'UTF-8. Vous pouvez spécifier le jeu de caractères sur UTF-8 lors de la création d'une table avec la commande SQL suivante:
<span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> `content` (
`id` </span><span><span class="hljs-type">INT</span></span><span> </span><span><span class="hljs-keyword">NOT</span></span><span> </span><span><span class="hljs-keyword">NULL</span></span><span> AUTO_INCREMENT </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
`title` </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>) </span><span><span class="hljs-keyword">NOT</span></span><span> </span><span><span class="hljs-keyword">NULL</span></span><span>,
`description` TEXT
) ENGINE</span><span><span class="hljs-operator">=</span></span><span>InnoDB </span><span><span class="hljs-keyword">DEFAULT</span></span><span> CHARSET</span><span><span class="hljs-operator">=</span></span><span>utf8;
</span></span>
En spécifiant le charset par défaut = UTF8 , nous nous assurons que le tableau prend en charge le codage UTF-8 et peut stocker les caractères à partir de diverses langues.
Problème du code des ordures:
Si le code brouillé apparaît toujours après la définition du jeu de caractères, vérifiez d'abord si le jeu de caractères par défaut de la base de données est UTF-8. De plus, vous devez vous assurer que le codage HTML de la page est défini sur UTF-8. Si ceux-ci sont définis correctement, mais que le problème persiste, vous pouvez vérifier les paramètres du jeu de caractères pour les tables et champs de base de données.
Ensemble de caractères incohérent:
Si le jeu de caractères de la base de données et de la connexion PHP est incohérent, les caractères peuvent ne pas être affichés correctement. Utilisez la méthode MySQLI :: set_charset pour assurer la cohérence entre les deux.
Supports de la version MySQL:
Assurez-vous que votre version MySQL prend en charge UTF-8 ou UTF8MB4 (ce dernier est un superset de UTF-8 qui prend en charge plus de caractères, tels que les emojis, etc.). Vous pouvez afficher le jeu de caractères pris en charge par la base de données actuelle via la commande suivante:
<span><span><span class="hljs-keyword">SHOW</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span>;
</span></span>
Étiquettes associées:
mysqli