file_get_contents() Mengganggu Aksara UTF-8
Isu timbul apabila memuatkan HTML daripada pelayan luaran dengan pengekodan UTF-8. Aksara seperti ľ, š, č, ť, ž rosak dan digantikan dengan aksara yang tidak sah.
Punca Masalah
Fungsi file_get_contents() mungkin dihadapi isu pengekodan. Secara lalai, ia mentafsir data sebagai ASCII, yang gagal mengendalikan aksara UTF-8 dengan betul.
Cadangan Penyelesaian
Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan kaedah pengekodan alternatif .
1. Penukaran Pengekodan Manual
Gunakan fungsi mb_convert_encoding() untuk menukar HTML yang diambil kepada UTF-8:
$html = file_get_contents('http://example.com/foreign.html'); $utf8_html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
2. Pengekodan Output
Pastikan output dikodkan dengan betul dengan menambah baris berikut pada skrip:
header('Content-Type: text/html; charset=UTF-8');
3. Penukaran Entiti HTML
Tukar HTML yang diambil kepada entiti HTML sebelum mengeluarkannya:
$html = file_get_contents('http://example.com/foreign.html'); $html_entities = htmlentities($html, ENT_COMPAT, 'UTF-8'); echo $html_entities;
4. Penyahkodan JSON
Jika HTML luaran disimpan sebagai JSON, nyahkodkannya menggunakan kelas JSON:
$json = file_get_contents('http://example.com/foreign.html'); $decoded_json = json_decode($json, true); $html = $decoded_json['html'];
Dengan menggunakan teknik ini, anda boleh memintas isu pengekodan yang disebabkan oleh file_get_contents () dan pastikan paparan aksara UTF-8 yang betul.
Atas ialah kandungan terperinci Mengapa Aksara UTF-8 Dirosakkan Apabila Menggunakan `file_get_contents()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!