Aktueller Standort: Startseite> Neueste Artikel> Wie vermeiden Sie das durch FGetSS verursachte mehrsprachige Problem mit verstümmeltem Problem? Praktische Lösungen

Wie vermeiden Sie das durch FGetSS verursachte mehrsprachige Problem mit verstümmeltem Problem? Praktische Lösungen

gitbox 2025-08-27
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil hat nichts mit dem Inhalt des Artikels zu tun,Kann verwendet werden, um gemeinsame Konfigurationen oder Kommentare zu platzieren</span></span><span>
</span><span><span class="hljs-comment">// Zum Beispiel:Konstanten definieren、Konfigurationsdateien usw. laden</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">'Mehrsprachige Verarbeitungswerkzeuge'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>Wie man vermeidet fgetss Mehrsprachige verstümmelte Probleme verursacht verursacht?Praktische Lösungen</h1>

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

2. Geben Sie die richtige Codierung in PHP an

Nach dem Lesen des Inhalts können Sie mit MB_CONVERT_ENCODING () die Zeichenfolge in die Zielcodierung konvertieren:

 &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">// Angenommen, die Dateicodierung ist GBK,Wenden Sie sich an 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;

Hier ist der dritte Parameter von mb_convert_encoding die ursprüngliche Codierung der Datei, und die erste und zweite Parameter sind die Zielcodierung bzw. die Eingabezeichenfolge.

3. Setzen Sie die Seitencodierung

Stellen Sie sicher, dass auf der Ausgabe -HTML -Seite eine korrekte Codierungserklärung vorliegt, zum Beispiel:

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

Auf diese Weise kann der Browser die Inhaltscodierung korrekt identifizieren und die Anzeige für verstümmelte Code vermeiden.

4. Verwenden Sie PHP-integrierte Funktionen, um die Codierung zu erkennen

Sie können MB_DETECT_ENCODING () verwenden, um die Codierung automatisch zu erkennen, um das Schreiben von toten Codierung zu vermeiden:

 &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. Vermeiden Sie die Verwendung von FGetss ()

Wenn Sie nur HTML -Tags filtern, sollten Sie fGets () kombiniert mit strip_tags () verwenden, damit die Codierungsverarbeitung flexibler ist:

 &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">// Der Codierungskonvertierungsprozess ist der gleiche wie oben</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. Zusammenfassung

  • Die Datei- und Seitencodierung sollte konsistent sein, und es wird empfohlen, UTF- 8 auf einheitliche Weise zu verwenden .
  • Verwenden Sie nach dem Lesen mb_convert_encoding () , um die Codierung zu konvertieren, um sicherzustellen, dass die Zeichen normal angezeigt werden.
  • Vermeiden Sie es, sich direkt auf die codierende Annahme von FGetss () zu verlassen und fGTS () und Strip_tags () zu kombinieren, um die Kompatibilität zu verbessern.
  • Die Seite muss die korrekte Codierung deklarieren, bevor der Browser normal analysieren kann.

Durch die obige Methode können Entwickler das durch fGetSS () verursachte mehrsprachige, verstümmeltes Problem effektiv vermeiden und die Stabilität und Lesbarkeit des Programms mit mehrsprachiger Text sicherstellen.