Я знаю 2 способа, как исправить строку UTF-8, содержащую недопустимые символы:
- Недопустимые символы будут заменены знаками вопроса ("?"):
$message = mb_convert_encoding($message, 'UTF-8', 'UTF-8');
Недопустимые символы будут удалены. L
$message = iconv('UTF-8', 'UTF-8//IGNORE', $message);
Второй метод на самом деле был описан в вопросе.Но это не производит E_NOTICE
в моем случае.Я тестировал с различными поврежденными строками UTF-8 с error_reporting(E_ALL);
, и результат всегда был ожидаемым.Возможно что-то изменилось с 2012 года. Я тестировал на PHP 7.2.9 Win.