Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `file_get_contents()` Menghancurkan Aksara UTF-8, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `file_get_contents()` Menghancurkan Aksara UTF-8, dan Bagaimana Saya Boleh Membetulkannya?

DDD
DDDasal
2024-12-09 14:34:13386semak imbas

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

file_get_contents() Mengherotkan Aksara UTF-8: Satu Resolusi

Apabila memuatkan HTML daripada sumber luaran dengan pengekodan UTF-8, file_get_contents() boleh merosakkan aksara, mengakibatkan perwakilan yang salah daripada特殊字符. Untuk menangani isu ini:

Periksa Tetapan Pengekodan:

Pastikan pelayan jauh menyediakan HTML dalam pengekodan UTF-8 yang betul. Semak pengepala Jenis Kandungan untuk mengesahkan pengekodan yang diisytiharkan oleh pelayan.

Guna Pengekodan pada Fungsi PHP Asli:

Dalam sesetengah kes, nyatakan pengekodan dalam PHP secara manual fungsi boleh menyelesaikan masalah. Gunakan fungsi mb_detect_encoding() untuk mengenal pasti pengekodan kandungan yang dikembalikan dan kemudian gunakan mb_convert_encoding() atau iconv() untuk menukarnya kepada pengekodan yang diingini (cth., UTF-8).

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

Pertimbangkan Entiti HTML:

Jika aksara masih diherotkan, pertimbangkan untuk menukarnya kepada entiti HTML. Ini boleh dilakukan menggunakan htmlentities().

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

Contoh:

Contoh berikut menunjukkan cara memuatkan HTML dengan aksara UTF-8 dan menukarnya kepada HTML entiti:

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

Atas ialah kandungan terperinci Mengapakah `file_get_contents()` Menghancurkan Aksara UTF-8, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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