Heim >Backend-Entwicklung >PHP-Tutorial >Warum verfälscht „file_get_contents()' UTF-8-Zeichen und wie kann ich das beheben?

Warum verfälscht „file_get_contents()' UTF-8-Zeichen und wie kann ich das beheben?

DDD
DDDOriginal
2024-12-09 14:34:13386Durchsuche

Why Does `file_get_contents()` Garble UTF-8 Characters, and How Can I Fix It?

file_get_contents() verzerrt UTF-8-Zeichen: Eine Auflösung

Beim Laden von HTML aus externen Quellen mit UTF-8-Kodierung wird file_get_contents() kann Zeichen verfälschen, was zu einer falschen Darstellung von „特殊字符“ führt. Um dieses Problem zu beheben:

Kodierungseinstellungen prüfen:

Stellen Sie sicher, dass der Remote-Server den HTML-Code in der richtigen UTF-8-Kodierung bereitstellt. Überprüfen Sie den Content-Type-Header, um die vom Server deklarierte Codierung zu bestätigen.

Codierung auf native PHP-Funktionen anwenden:

In einigen Fällen muss die Codierung in PHP manuell angegeben werden Funktionen können das Problem beheben. Verwenden Sie die Funktion mb_detect_encoding(), um die Kodierung des zurückgegebenen Inhalts zu identifizieren, und verwenden Sie dann mb_convert_encoding() oder iconv(), um ihn in die gewünschte Kodierung (z. B. UTF-8) zu konvertieren.

$html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));

Erwägen Sie HTML-Entitäten:

Wenn die Zeichen immer noch verzerrt sind, sollten Sie eine Konvertierung in HTML in Betracht ziehen Entitäten. Dies kann mit htmlentities() erfolgen.

$html = htmlentities($html, ENT_QUOTES, 'UTF-8');

Beispiel:

Das folgende Beispiel zeigt, wie man HTML mit UTF-8-Zeichen lädt und in HTML konvertiert Entitäten:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Test</title>
</head>
<body>
  <?php
    $html = file_get_contents('http://example.com');
    echo htmlentities($html);
  ?>
</body>
</html>

Das obige ist der detaillierte Inhalt vonWarum verfälscht „file_get_contents()' UTF-8-Zeichen und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn