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
421 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!

sumber:php.cn
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