Знак вопроса в ромбе указывает на ошибку на уровне символов: данные содержат байты, которые не представляют какой-либо символ в соответствии с применяемой кодировкой символов. Обычно это происходит, когда документ объявляется в кодировке UTF-8, но на самом деле он находится в iso-8859-1, windows-1252 или в некоторой аналогичной кодировке. Windows-1252 - это стандартная кодировка по умолчанию, используемая различными программами на платформах Windows. Поэтому вам может понадобиться открыть файл в вашей программе разработки и повторно сохранить его в кодировке UTF-8.
Если проблемы остались, опубликуйте URL. Одной только публикации кода недостаточно, поскольку кодировка символов в основном указана в заголовках HTTP.
Если вы видите вопросительный знак в маленьком окошке, это может быть проблемой на уровне шрифта (отсутствие глифа в используемых шрифтах), но это будет очень редко для обычных символов, таких как em dash. Различные браузеры по-разному обозначают проблемы на уровне символов или шрифтов.