Я считаю, что проблема в вашей кодировке. Ваш вывод UTF-8, но ваш браузер не может интерпретировать один из символов. Символ знака вопроса, каким я его знал в прошлом, на самом деле генерируется браузером, поэтому поиск и замена не производятся ... речь идет об исправлении вашей кодировки ИЛИ об удалении неизвестных символов из строки перед ее выводом ...
Если у вас есть доступ к источнику данных, то вы можете проверить настройки БД, чтобы убедиться, что они правильно закодированы ... если нет, то вам нужно будет найти способ конвертировать данные, используя php. ... не простая задача ...
Возможно:
mb_convert_encoding($string, "UTF-8");