Lorsque vous utilisez une base de données MySQL, il est important de s'assurer que le jeu de caractères est correctement défini. Le réglage correct des ensembles de caractères affecte non seulement les performances de la base de données, mais affecte également directement le stockage et la lecture des données, en particulier en ce qui concerne le contenu multilingue. Si le jeu de caractères n'est pas défini correctement, il peut entraîner des erreurs de code brouillé, de perte de données ou de base de données.
PHP fournit des extensions MySQLI pour manipuler les bases de données MySQL, et les méthodes MySQLI :: Caracter_Set_name et MySQLI :: Select_DB peuvent nous aider à nous assurer que le jeu de caractères est correctement défini. Cet article expliquera en détail comment utiliser ces deux méthodes pour configurer le jeu de caractères d'une base de données.
Le jeu de caractères définit les règles d'encodage des caractères stockées et affichées dans la base de données. Les jeux de caractères communs incluent UTF8 , Latin1 , UTF8MB4 , etc. UTF8 et UTF8MB4 prennent en charge le stockage de caractères multilingues, mais UTF8MB4 est un jeu de caractères plus complet qui prend en charge plus de symboles et d'emojis.
Après avoir été connecté à la base de données à l'aide de MySQLI , par défaut, la connexion de la base de données utilise le jeu de caractères par défaut de la base de données MySQL. Si vous souhaitez vous assurer que la connexion de la base de données utilise un jeu de caractères spécifique, vous pouvez utiliser la méthode MySQLI :: SELECT_DB .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Créer une connexion</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 surutf8</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-comment">// Sélectionnez une base de données</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">select_db</span></span><span>(</span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans le code ci-dessus, SET_CHARSET est utilisé pour définir le jeu de caractères pour s'assurer que la connexion de la base de données adopte le jeu de caractères UTF8 et évite les problèmes de code brouillé.
La méthode MySQLI :: Caracter_Set_name est utilisée pour faire utiliser le jeu de caractères par la connexion actuelle. Cette méthode est utile, en particulier lors du débogage, vous pouvez confirmer que vous avez réussi à passer au jeu de caractères requis.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Obtenez le jeu de caractères de la connexion de la base de données actuelle</span></span><span>
</span><span><span class="hljs-variable">$current_charset</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le jeu de caractères actuel est: "</span></span><span> . </span><span><span class="hljs-variable">$current_charset</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Si le jeu de caractères actuel a été défini sur UTF8 , le code ci-dessus sortira:
<span><span><span class="hljs-section">Le jeu de caractères actuel est: utf8</span></span><span>
</span></span>En plus de définir le jeu de caractères dans PHP, vous devez également vous assurer que les paramètres du jeu de caractères de la base de données et de la table sont cohérents. Si la base de données et la table eux-mêmes utilisent différents jeux de caractères, même si vous définissez le jeu de caractères dans PHP, vous ne pouvez pas complètement éviter le code brouillé.
<span><span><span class="hljs-keyword">CREATE</span></span><span> DATABASE database_name </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span> <span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> table_name (
id </span><span><span class="hljs-type">INT</span></span><span> AUTO_INCREMENT </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
name </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>
) </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span> <span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> table_name </span><span><span class="hljs-keyword">CONVERT</span></span><span> </span><span><span class="hljs-keyword">TO</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span>Après s'être assuré que les paramètres du jeu de caractères de la base de données et de la table sont cohérents, les opérations de base de données seront plus stables et pourront éviter la corruption des données en raison de l'inadéquation du jeu de caractères.
L'utilisation de mysqli :: caractères_set_name et mysqli :: select_db garantit que la connexion de la base de données utilise le jeu de caractères correct, évitant ainsi des problèmes tels que le code brouillé ou la perte de données. En définissant le jeu de caractères correct, vous pouvez non seulement améliorer la compatibilité de votre stockage de données, mais vous assurer également que les utilisateurs de données lus dans la base de données sont corrects.
Dans le développement réel, il est recommandé d'utiliser toujours le jeu de caractères UTF8MB4 car il prend en charge plus de caractères et de symboles, en particulier lorsqu'il s'agit de contenu multilingue, ce qui peut éviter efficacement les erreurs de jeu de caractères courantes.
Étiquettes associées:
mysqli