Position actuelle: Accueil> Derniers articles> Comment éviter le problème brouillé multilingue causé par les FGETSS? Solutions pratiques

Comment éviter le problème brouillé multilingue causé par les FGETSS? Solutions pratiques

gitbox 2025-08-27
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n&#39;a rien à voir avec le contenu de l&#39;article,Peut être utilisé pour placer des configurations ou des commentaires communs</span></span><span>
</span><span><span class="hljs-comment">// Par exemple:Définir les constantes、Chargez des fichiers de configuration, etc.</span></span><span>
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'APP_NAME'</span></span><span>, </span><span><span class="hljs-string">'Outils de traitement multilingues'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>Comment éviter fgetss Problèmes brouillés multilingues causés?Solutions pratiques</h1>

<p>exister PHP milieu,<code></span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>()

2. Spécifiez le codage correct en php

Après avoir lu le contenu, vous pouvez utiliser mb_convert_encoding () pour convertir la chaîne en codage cible:

 &lt;?php
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'multilang.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// Supposons que l&#39;encodage du fichier soit GBK,Se tourner vers UTF-8</span></span><span>
        </span><span><span class="hljs-variable">$utf8Line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>);
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$utf8Line</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}
?&gt;

Ici, le troisième paramètre de MB_CONVERT_ENCODING est le codage d'origine du fichier, et les premier et deuxième paramètres sont respectivement le codage cible et la chaîne d'entrée.

3. Définir l'encodage de la page

Assurez-vous qu'il existe une déclaration de codage correcte dans la page HTML de sortie, par exemple:

 &lt;meta charset=</span><span><span class="hljs-string">"UTF-8"</span></span><span>&gt;

De cette façon, le navigateur peut identifier correctement l'encodage de contenu et éviter l'affichage de code brouillé.

4. Utilisez des fonctions intégrées PHP pour détecter le codage

Vous pouvez utiliser mb_detect_encoding () pour détecter automatiquement l'encodage pour éviter d'écrire un codage mort:

 &lt;?php
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>);
</span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, [</span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>, </span><span><span class="hljs-string">'BIG5'</span></span><span>], </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$encoding</span></span><span> !== </span><span><span class="hljs-string">'UTF-8'</span></span><span>) {
    </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-variable">$encoding</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
?&gt;

5. Évitez d'utiliser fGetSS ()

Si vous filtrez purement les balises HTML, envisagez d'utiliser fgets () combinée avec strip_tags () , afin que le traitement de codage soit plus flexible:

 &lt;?php
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'multilang.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>);
        </span><span><span class="hljs-comment">// Le processus de conversion de codage est le même que ci-dessus</span></span><span>
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}
?&gt;

3. Résumé

  • L'encodage des fichiers et de la page doit être cohérent et il est recommandé d'utiliser UTF- 8 de manière unifiée .
  • Après avoir lu, utilisez MB_Convert_encoding () pour convertir le codage pour vous assurer que les caractères sont affichés normalement.
  • Évitez de s'appuyer directement sur l'hypothèse de codage de fGetSSS () et de combiner fgets () et strip_tags () pour améliorer la compatibilité.
  • La page doit déclarer le codage correct avant que le navigateur puisse analyser normalement.

Grâce à la méthode ci-dessus, les développeurs peuvent éviter efficacement le problème de brouillage multilingue causé par FGETSSS () et assurer la stabilité et la lisibilité de la gestion par le programme du texte multilingue.