MySQLI :: Get_Charset est une méthode de l'extension MySQLI dans PHP pour obtenir le jeu de caractères de la connexion de la base de données actuelle. Charset détermine comment la base de données utilise pour stocker et traiter le texte. Les jeux de caractères communs incluent UTF8 , UTF8MB4 , Latin1 , etc., et pour les sites Web multilingues, UTF8MB4 est généralement le jeu de caractères le plus recommandé car il prend en charge plus de caractères, y compris les emojis, etc.
<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-comment">// Obtenez le jeu de caractères actuel</span></span><span>
</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__">get_charset</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">$charset</span></span><span>->charset;
</span></span>
Grâce à mysqli :: get_charset , les développeurs peuvent facilement vérifier le jeu de caractères utilisé par la connexion de la base de données actuelle pour assurer la cohérence et l'exactitude des données.
Les sites Web multilingues doivent gérer les caractères en plusieurs langues, ce qui peut impliquer différentes méthodes de codage. Par exemple, chinois, japonais, arabe, français, etc., ils peuvent contenir des caractères uniques. Sans un jeu de caractères approprié, des exceptions de code de code ou de données brouillé peuvent se produire. Les questions courantes comprennent:
Les symboles spéciaux sont affichés de manière incorrecte (par exemple, les caractères chinois sont affichés comme brouillants).
La base de données ne peut pas stocker correctement des caractères multilingues (par exemple, les emoji ne peuvent pas être stockés).
Pour éviter ces problèmes, utiliser des ensembles de caractères qui prennent en charge plusieurs caractères linguistiques est la clé de la résolution.
Au cours du processus de développement, des problèmes de code brouillé sont souvent rencontrés. Dans les sites Web multilingues, si vous voyez que les données de texte stockées dans la base de données ne peuvent pas être affichées correctement, c'est généralement le jeu de caractères qui n'est pas défini correctement. À l'heure actuelle, vous pouvez vérifier le jeu de caractères actuel par mysqli :: get_charset pour vous assurer qu'il est UTF8MB4 (ou au moins UTF8 ).
Si vous constatez que le jeu de caractères actuellement connecté ne convient pas, vous pouvez utiliser la méthode MySQLI :: set_charset pour définir le jeu de caractères correct. Comme indiqué ci-dessous:
<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-comment">// Définissez le jeu de caractères sur utf8mb4</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">"utf8mb4"</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le paramètre de jeu de caractères a échoué: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
} </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">"Le jeu de caractères est défini avec succès sur: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_charset</span></span><span>()->charset;
}
</span></span>
De cette façon, les développeurs peuvent s'assurer que le jeu de caractères des connexions de base de données est toujours cohérent avec le jeu de caractères multilingues pris en charge par le site Web, en évitant les erreurs de codage lors du stockage ou de la lecture de données.
Pour les sites Web multilingues, l'utilisation du jeu de caractères UTF8MB4 est le meilleur choix. Il soutient non seulement les personnages communs (y compris la plupart des personnages de langue européenne), mais soutient également d'autres personnages tels que le chinois, le japonais, le coréen et même les emojis. Si vous utilisez le jeu de caractères UTF8 , il peut ne pas prendre en charge certains caractères Unicode plus grands (tels que les emojis), donc UTF8MB4 est recommandé.
Vous pouvez définir le jeu de caractères au niveau de la base de données et de la table, ou vous pouvez utiliser la méthode MySQLI :: Set_Charset de PHP pour vous assurer que la connexion utilise le jeu de caractères correct.
<span><span><span class="hljs-comment">// Définissez le jeu de caractères de connexion de la base de données sur utf8mb4</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">"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>-></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><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le jeu de caractères a été défini sur utf8mb4"</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">"Le paramètre de jeu de caractères a échoué"</span></span><span>;
}
</span></span>
Lors de la création d'une table de base de données, vous pouvez également spécifier un jeu de caractères, tel que:
<span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> users (
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">100</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>
Lors de la gestion des entrées multilingues, il est très important de s'assurer que le texte envoyé par le front-end à l'arrière-end est cohérent avec le code texte stocké dans la base de données. La page frontale doit définir le codage de caractères correct (par exemple UTF-8 ) pour s'assurer qu'il n'y a pas d'erreur de codage dans le formulaire soumis.
Lorsque vous recevez une entrée utilisateur dans le backend PHP, MySQLI :: Get_Charset peut être utilisé pour confirmer si la connexion de la base de données actuelle prend en charge le jeu de caractères requis. Si le frontal utilise le codage UTF-8 , mais que le jeu de caractères de la base de données ne correspond pas, les données seront brouillées.
<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>
Pour les personnages dans certaines langues spéciales, en particulier ceux écrits à droite à gauche (comme l'arabe et l'hébreu), le jeu de caractères et la méthode de stockage corrects sont particulièrement importants. UTF8MB4 peut bien prendre en charge ces langues et maintenir la cohérence dans le stockage, la requête et la présentation des données.
Lors de la conception de structures de base de données, les développeurs doivent accorder une attention particulière à la durée du champ de type VARCHAR pour s'assurer qu'ils peuvent stocker des caractères Unicode plus longs (par exemple, les emoji peuvent prendre plus d'octets).
Dans le processus de développement de sites Web multilingues, les problèmes d'encodage des caractères ne peuvent pas être ignorés. Avec la méthode MySQLI :: get_charset , les développeurs peuvent facilement vérifier le jeu de caractères de la connexion de la base de données actuelle pour s'assurer qu'elle est cohérente avec le codage frontal, évitant ainsi les problèmes brouillés. Dans le même temps, en sélectionnant de manière appropriée le jeu de caractères UTF8MB4 , il peut prendre en charge une gamme plus large de caractères et améliorer l'internationalisation et la compatibilité du site Web.