Heim > Backend-Entwicklung > PHP-Tutorial > Warum sind UTF-8-Zeichen bei Verwendung von „file_get_contents()' beschädigt?

Warum sind UTF-8-Zeichen bei Verwendung von „file_get_contents()' beschädigt?

Susan Sarandon
Freigeben: 2024-12-09 22:42:13
Original
414 Leute haben es durchsucht

Why are UTF-8 Characters Corrupted When Using `file_get_contents()`?

file_get_contents() unterbricht UTF-8-Zeichen

Das Problem tritt auf, wenn HTML von einem externen Server mit UTF-8-Kodierung geladen wird. Zeichen wie ľ, š, č, ť, ž werden beschädigt und durch ungültige Zeichen ersetzt.

Die Wurzel des Problems

Die Funktion file_get_contents() kann auftreten Codierungsprobleme. Standardmäßig werden die Daten als ASCII interpretiert, wodurch UTF-8-Zeichen nicht korrekt verarbeitet werden können.

Vorgeschlagene Lösung

Um dieses Problem zu beheben, sollten Sie die Verwendung einer alternativen Kodierungsmethode in Betracht ziehen .

1. Manuelle Kodierungskonvertierung

Verwenden Sie die Funktion mb_convert_encoding(), um den abgerufenen HTML-Code in UTF-8 zu konvertieren:

$html = file_get_contents('http://example.com/foreign.html');
$utf8_html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
Nach dem Login kopieren

2. Ausgabekodierung

Stellen Sie sicher, dass die Ausgabe ordnungsgemäß kodiert ist, indem Sie dem Skript die folgende Zeile hinzufügen:

header('Content-Type: text/html; charset=UTF-8');
Nach dem Login kopieren

3. HTML-Entitätskonvertierung

Konvertieren Sie das abgerufene HTML in HTML-Entitäten, bevor Sie es ausgeben:

$html = file_get_contents('http://example.com/foreign.html');
$html_entities = htmlentities($html, ENT_COMPAT, 'UTF-8');
echo $html_entities;
Nach dem Login kopieren

4. JSON-Dekodierung

Wenn das externe HTML als JSON gespeichert ist, dekodieren Sie es mit der JSON-Klasse:

$json = file_get_contents('http://example.com/foreign.html');
$decoded_json = json_decode($json, true);
$html = $decoded_json['html'];
Nach dem Login kopieren

Durch die Verwendung dieser Techniken können Sie die durch file_get_contents verursachten Kodierungsprobleme umgehen () und stellen Sie die korrekte Anzeige von UTF-8-Zeichen sicher.

Das obige ist der detaillierte Inhalt vonWarum sind UTF-8-Zeichen bei Verwendung von „file_get_contents()' beschädigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage