Vấn đề cuối cùng là một ký tự không phải ASCII có trong thẻ CDATA, như Colin đã chỉ ra trong phần nhận xét của câu hỏi.
Tôi đang gấp rút giải quyết vấn đề này nên tôi chỉ sử dụng phương pháp brute force và chạy mọi thứ thông qua thay thế regex ngoài utf8_encode (), tôi đã sử dụng:$ output =preg_replace ('/ [^ (\ x20- \ x7F)] * / ',' ', $ output); Tôi tìm thấy cái này ở đây: http://www.stemkoski.com/php-remove-non-ascii-characters-from-a-string/
Cảm ơn Colin và Francis vì những đóng góp của họ.