$string = file_get_contents('http://example.com');
if ('UTF-8' === mb_detect_encoding($string)) {
$dom = new DOMDocument();
// hack to preserve UTF-8 characters
$dom->loadHTML('<?xml encoding="UTF-8">' . $string);
$dom->preserveWhiteSpace = false;
$dom->encoding = 'UTF-8';
$body = $dom->getElementsByTagName('body');
echo htmlspecialchars($body->item(0)->nodeValue);
}
Điều này thay đổi tất cả các ký tự UTF-8 thành Å, ¾, ¤ và các rác khác. Có cách nào khác để bảo vệ các ký tự UTF-8 không?Tại sao DOM thay đổi mã hóa?
Không đăng câu trả lời cho tôi biết để đảm bảo rằng tôi xuất ra dưới dạng UTF-8, tôi đã đảm bảo rằng tôi đang có.
Cảm ơn trước :)
đâu dữ liệu ('$ chuỗi') đến từ đâu? –
Tôi đã cập nhật câu hỏi của mình :) –
Bạn có thể cung cấp liên kết tới URL bạn tìm nạp bằng cách sử dụng file_get_contents() không? Như tôi đã nói trong câu hỏi khác, tôi nghi ngờ bạn đang nhận được ISO-8859-1 hoặc một số dữ liệu khác, trong đó * có * bị cắt xén khi xuất trong UTF-8. Tôi sẽ không dựa vào mb_detect_encoding(). –