Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Aksara UTF-8 Dirosakkan Apabila Menggunakan `file_get_contents()`?

Mengapa Aksara UTF-8 Dirosakkan Apabila Menggunakan `file_get_contents()`?

Susan Sarandon
Lepaskan: 2024-12-09 22:42:13
asal
500 orang telah melayarinya

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

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));
Salin selepas log masuk

2. Pengekodan Output

Pastikan output dikodkan dengan betul dengan menambah baris berikut pada skrip:

header('Content-Type: text/html; charset=UTF-8');
Salin selepas log masuk

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;
Salin selepas log masuk

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'];
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan