<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n'a rien à voir avec le contenu de l'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>()
Après avoir lu le contenu, vous pouvez utiliser mb_convert_encoding () pour convertir la chaîne en codage cible:
<?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'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">"<br>"</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>);
}
?>
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.
Assurez-vous qu'il existe une déclaration de codage correcte dans la page HTML de sortie, par exemple:
<meta charset=</span><span><span class="hljs-string">"UTF-8"</span></span><span>>
De cette façon, le navigateur peut identifier correctement l'encodage de contenu et éviter l'affichage de code brouillé.
Vous pouvez utiliser mb_detect_encoding () pour détecter automatiquement l'encodage pour éviter d'écrire un codage mort:
<?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>;
?>
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:
<?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>);
}
?>
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.