Position actuelle: Accueil> Derniers articles> Exemple de fonctionnement pratique de l'utilisation de mysqli :: caractères_set_name pour obtenir des jeux de caractères et effectuer une conversion de codage

Exemple de fonctionnement pratique de l'utilisation de mysqli :: caractères_set_name pour obtenir des jeux de caractères et effectuer une conversion de codage

gitbox 2025-09-08

<span><span><span class="hljs-meta"><?php</span></span><span> </span><span><span class="hljs-comment">// 示例 PHP 文章生成程序</span></span><span> </span><span><span class="hljs-comment">// 文章标题: 使用 mysqli::character_set_name 获取字符集并进行编码转换的实际操作示例</span></span><span> </span><span><span class="hljs-comment">// 输出文章,正文与前置部分通过水平线分隔</span></span><span> </span><span><span class="hljs-keyword">echo</span></span><span> <span class="hljs-string"><<<EOT 使用 mysqli::character_set_name 获取字符集并进行编码转换的实际操作示例 --------------------------------------------------------------------- 在使用 PHP 的 mysqli 扩展与 MySQL 数据库进行交互时,字符集问题是一个非常常见且需要重视的环节。若处理不当,往往会出现中文乱码、数据存储与读取不一致等情况。本文将介绍如何通过 \`mysqli::character_set_name\` 方法获取当前连接所使用的字符集,并结合编码转换来确保数据的正确性。 **一、mysqli::character_set_name 方法简介** \`mysqli::character_set_name\` 用于返回当前数据库连接所使用的字符集。例如,当我们连接数据库并设置字符集为 UTF-8 时,该方法将返回 “utf8” 或 “utf8mb4”。通过该方法,我们可以快速检查当前连接是否已经处于预期的字符集状态。 **二、实际操作示例** 下面给出一个简单的示例代码,演示如何使用 \`mysqli::character_set_name\` 获取字符集,并在需要时进行编码转换。 ```php <?php // 创建数据库连接 </span></span><span><span class="hljs-subst">$mysqli</span></span><span> = new mysqli("localhost", "username", "password", "test_db"); // 检查连接是否成功 if (</span><span><span class="hljs-subst">$mysqli</span></span><span>->connect_errno) { die("数据库连接失败: " . </span><span><span class="hljs-subst">$mysqli</span></span><span>->connect_error); } // 设置字符集 </span><span><span class="hljs-subst">$mysqli</span></span><span>->set_charset("utf8mb4"); // 获取当前字符集 </span><span><span class="hljs-subst">$current_charset</span></span><span> = </span><span><span class="hljs-subst">$mysqli</span></span><span>->character_set_name(); echo "当前连接字符集为: " . </span><span><span class="hljs-subst">$current_charset</span></span><span> . "\\n"; // 从数据库查询数据 </span><span><span class="hljs-subst">$result</span></span><span> = </span><span><span class="hljs-subst">$mysqli</span></span><span>->query("SELECT name FROM users LIMIT 1"); </span><span><span class="hljs-subst">$row</span></span><span> = </span><span><span class="hljs-subst">$result</span></span><span>->fetch_assoc(); // 假设数据库存储的编码与页面显示编码不一致,可以进行转换 // 例如,将 utf8mb4 数据转换为 GBK 输出 </span><span><span class="hljs-subst">$name</span></span><span> = </span><span><span class="hljs-subst">$row</span></span><span>['name']; </span><span><span class="hljs-subst">$converted_name</span></span><span> = iconv("UTF-8", "GBK//IGNORE", </span><span><span class="hljs-subst">$name</span></span><span>); echo "原始数据: " . </span><span><span class="hljs-subst">$name</span></span><span> . "\\n"; echo "转换后的数据: " . </span><span><span class="hljs-subst">$converted_name</span></span><span> . "\\n"; </span><span><span class="hljs-subst">$mysqli</span></span><span>->close(); ?> </span></span>

  1. Réglage de priorité du jeu de caractères : «set_charse» doit être appelé immédiatement après la connexion de la base de données pour s'assurer que les opérations ultérieures sont cohérentes.

  2. Évitez les problèmes brouillés : le codage de la page frontale doit correspondre au codage de la base de données, sinon il doit être converti via `iconv` ou` mb_convert_encoding`.

  3. Recommandé d'utiliser UTF8MB4 : par rapport à UTF8, `UTF8MB4` prend en charge un jeu de caractères Unicode plus complet, y compris les emoji emoji.

4. Résumé

Grâce à `mysqli :: caractères_set_name`, les développeurs peuvent facilement confirmer le jeu de caractères utilisé par la connexion actuelle et combiner la fonction de conversion de codage pour assurer la cohérence des données dans le stockage et l'affichage. Une bonne gestion des ensembles de caractères peut non seulement éviter les problèmes de code brouillé, mais également améliorer la stabilité et l'expérience utilisateur du système.

Eot;

 <span></span>
  • Étiquettes associées:

    mysqli