Position actuelle: Accueil> Derniers articles> Vous voulez utiliser UTF-8? Apprenez-vous à définir correctement l'encodage à l'aide de mysqli :: set_charset en php

Vous voulez utiliser UTF-8? Apprenez-vous à définir correctement l'encodage à l'aide de mysqli :: set_charset en php

gitbox 2025-09-18

Qu'est-ce que le codage UTF-8?

UTF-8 (Unicode Transformation Format-8) est une méthode d'encodage de caractères de longueur variable qui peut représenter tous les caractères dans le jeu de caractères Unicode et utilise un stockage de 1 octet pour les caractères anglais et un stockage de 2 à 4 octets pour d'autres caractères. Son avantage est qu'il peut s'exprimer de manière unifiée dans les langues et les symboles dans divers pays du monde, et est compatible avec le codage ASCII, et est largement utilisé dans le développement Web et le stockage de bases de données.

Dans PHP, le codage UTF-8 est souvent utilisé pour gérer l'échange de données et le stockage de sites Web multilingues, en particulier lors du transfert de données entre une base de données et un navigateur. Si l'encodage n'est pas réglé correctement, il est facile de causer des problèmes de code brouillé.

Pourquoi utiliser mysqli :: set_charset ?

Dans PHP, si vous utilisez une base de données MySQL et utilisez une extension MySQLI pour connecter et utiliser la base de données, il est très important de s'assurer que la connexion de la base de données utilise le codage UTF-8. Sinon, même si vos tables et champs de base de données sont définis avec un codage UTF-8, il peut encore y avoir des problèmes brouillés lors de la transmission de données en raison de la décroche.

La méthode MySQLI :: set_charset vous permet de définir un jeu de caractères pour la connexion de la base de données actuelle. En définissant le jeu de caractères sur UTF-8, il est assuré que la base de données PHP et MySQL peut être correctement codée et décodée lors de la requête et de l'insertion de données.

Comment définir correctement le codage UTF-8 à l'aide de mysqli :: set_charset ?

  1. Créer une connexion de base de données:

    Utilisez la méthode MySQLI_Connect ou New MySQLI () pour vous connecter à la base de données.

  2. Définir le jeu de caractères:

    Après avoir réussi à vous connecter à la base de données, utilisez la méthode MySQLI :: set_charset pour définir le jeu de caractères sur UTF-8.

Exemple de code

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 1. Créer une connexion de base de données</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">'your_database'</span></span><span>;

</span><span><span class="hljs-variable">$conn</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-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</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">$conn</span></span><span>-&gt;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">$conn</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 2. 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">$conn</span></span><span>-&gt;</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"erreur: Impossible de définir le jeu de caractères UTF-8: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;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">"Jeu de caractères actuel: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
}

</span><span><span class="hljs-comment">// 3. Effectuer des requêtes et d&#39;autres opérations</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM your_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>-&gt;num_rows &gt; </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"données: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'column_name'</span></span><span>] . </span><span><span class="hljs-string">"&lt;br&gt;"</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">"没有données"</span></span><span>;
}

</span><span><span class="hljs-comment">// 4. Fermer la connexion</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Analyse de code:

  1. Connexion de la base de données:
    Une connexion de base de données a été créée à l'aide de New MySQLI () et a vérifié si la connexion a été réussie. Si la connexion échoue, le programme est terminé via DIE () et un message d'erreur s'affiche.

  2. Définir le jeu de caractères:
    Utilisez $ con-> set_charset ("utf8") pour définir le jeu de caractères de connexion sur UTF-8. À ce stade, tous les transferts de données entre les bases de données PHP et MySQL sont codés à l'aide de l'UTF-8. Si le paramètre échoue, vous pouvez publier le message d'erreur via $ Conn-> Erreur .

  3. Exécutez la requête:
    Interrogez les données de votre table de votre_Table pour vous assurer que les données renvoyées peuvent afficher correctement les caractères codés UTF-8.

  4. Fermez la connexion:
    Enfin, fermez la connexion de la base de données à l'aide de $ con-> close () .

Choses à noter

  • Ensemble de caractères des tables de base de données:
    En plus de définir le jeu de caractères dans PHP, vous devez également vous assurer que les jeux de caractères des tables et champs de base de données sont également UTF-8. Vous pouvez afficher le jeu de caractères d'une table via Show Create Table , ou modifier le jeu de caractères d'une table via l'instruction SQL suivante:

     <span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table </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> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
    </span></span>
  • Encodage du navigateur:
    Assurez-vous que le jeu de caractères correct est défini dans la balise <adread> de la page HTML pour éviter le code brouillé du navigateur. Habituellement, les paramètres de balise suivants peuvent être utilisés:

     <span><span><span class="hljs-tag">&lt;<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>&gt;
    </span></span>
  • Set de caractère par défaut de MySQL Server:
    Si vous souhaitez que le serveur MySQL utilise le codage UTF-8 par défaut, vous pouvez le définir dans le fichier de configuration MySQL my.cnf ou my.ini :

     <span><span><span class="hljs-section">[mysqld]</span></span><span>
    </span><span><span class="hljs-attr">character-set-server</span></span><span> = utf8
    </span><span><span class="hljs-attr">collation-server</span></span><span> = utf8_general_ci
    </span></span>

Résumer

La configuration du codage UTF-8 avec MySQLI :: Set_Charset est une étape importante pour garantir que les données multilingues sont correctement traitées entre les bases de données PHP et MySQL. En configurant correctement le jeu de caractères, non seulement les problèmes de code brouillé peuvent être évités, mais s'assurent également que les données ne seront pas perdues ou non codées pendant la transmission. Assurez-vous que les ensembles de caractères des tables et des champs de base de données sont également UTF-8, afin que les paramètres de codage cohérents puissent être maintenus tout au long de l'application, améliorant ainsi la compatibilité et l'évolutivité du projet.

  • Étiquettes associées:

    mysqli