<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// L'exemple de cet article est PHP utiliser mysqli::character_set_name Vérifier le jeu de caractères de connexion de la base de données</span></span><span>
</span><span><span class="hljs-comment">// Veuillez vous assurer que vous avez correctement configuré les paramètres de connexion de la 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"</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éfinir le jeu de caractères attendu</span></span><span>
</span><span><span class="hljs-variable">$expectedCharset</span></span><span> = </span><span><span class="hljs-string">'utf8mb4'</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-variable">$expectedCharset</span></span><span>);
</span><span><span class="hljs-comment">// 获取当前连接utiliser的字符集</span></span><span>
</span><span><span class="hljs-variable">$currentCharset</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">"Jeu de caractères actuel: <span class="hljs-subst">$currentCharset</span></span></span><span>\n";
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$currentCharset</span></span><span> === </span><span><span class="hljs-variable">$expectedCharset</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Correspondant à un jeu de caractères,Les applications peuvent faire fonctionner les données en toute sécurité。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Déliachance des personnages,Actuellement <span class="hljs-subst">$currentCharset</span></span></span><span>,Devrait être </span><span><span class="hljs-subst">$expectedCharset</span></span><span>,Veuillez vérifier les paramètres。\n";
}
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
------------------------------------------------------------
</span><span><span class="hljs-comment"># 如何utiliser mysqli::character_set_name 确认数据库字符集Oui否与应用Correspondant à un jeu de caractères?</span></span><span>
En développement PHP Lors de l'application,Les problèmes de jeu de caractères sont l'un des problèmes courants qui affectent la lecture, l'écriture et l'affichage des données correctes.。Surtout quand il s'agit de contenu multilingue,Les jeux de caractères incohérents peuvent conduire à un code brouillé、Perte de données et même risques de sécurité。donc,Dans MySQL Une fois la connexion de la base de données établie,确认当前utiliser的字符集Oui否与应用期望的一致,C'est une étape très importante。
</span><span><span class="hljs-comment">## Qu'est-ce que `mysqli::character_set_name`?</span></span><span>
`mysqli::</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>()` Oui PHP `mysqli` Une méthode dans la classe,它返回当前数据库连接所utiliser的字符集名称。Par cette méthode,我们可以方便地确认当前连接实际utiliser的字符集,Évitez les problèmes de mauvaise configuration。
</span><span><span class="hljs-comment">## utiliser方法</span></span><span>
Vous pouvez appeler cette méthode après avoir réussi à établir une connexion de base de données。以下Oui一个基础的utiliser示例:
```php
</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">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</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-variable">$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">"当前utiliser的字符集Oui: <span class="hljs-subst">$charset</span></span></span><span>";
</span></span>
Par défaut, MySQLI utilise un jeu de caractères Latin1 , qui ne répond souvent pas aux besoins des applications modernes (en particulier chinois). Par conséquent, nous devons généralement définir manuellement le jeu de caractères, tel que UTF8MB4 .
<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">"utf8mb4"</span></span><span>);
</span></span>
Après le réglage, appelez caractères_set_name () pour confirmer si les paramètres sont efficaces.
Dans les applications pratiques, il est recommandé d'écrire un morceau de code logique pour détecter automatiquement le jeu de caractères correspondant:
<span><span><span class="hljs-variable">$expectedCharset</span></span><span> = </span><span><span class="hljs-string">'utf8mb4'</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-variable">$expectedCharset</span></span><span>);
</span><span><span class="hljs-variable">$currentCharset</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">if</span></span><span> (</span><span><span class="hljs-variable">$currentCharset</span></span><span> !== </span><span><span class="hljs-variable">$expectedCharset</span></span><span>) {
</span><span><span class="hljs-comment">// Enregistrer une erreur ou émettre un avertissement</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Déliachance des personnages: Actuellement <span class="hljs-subst">$currentCharset</span></span></span><span>,Devrait être </span><span><span class="hljs-subst">$expectedCharset</span></span><span>");
}
</span></span>
Bien que MySQL fournit UTF8 , il ne prend pas en charge le jeu de caractères UTF-8 complet (seul le codage de trois octets au maximum), tandis que UTF8MB4 prend en charge Full UTF-8, y compris des personnages de quatre octets tels que les emojis. Par conséquent, il est recommandé d'utiliser UTF8MB4 dans des applications Web modernes.
L'utilisation de mysqli :: caractères_set_name () est un moyen simple et efficace de confirmer le jeu de caractères réel d'une connexion de base de données. Vérifiez immédiatement après la définition du jeu de caractères pour éviter les problèmes causés par le codage incohérent. Les définitions de la structure de la table de base de données sont en coopération, encodeurs HTTP, etc., qui doivent être définis de manière cohérente sur le même jeu de caractères pour assurer le stockage et l'affichage corrects des données.
<span></span>
Étiquettes associées:
mysqli