Это, скорее всего, проблема с кодировкой символов.
Есть несколько причин, одна из них - выводимая кодировка символов, отличная от UTF-8.
так, скажем, ваш документ выводится в ISO -8859-1 (известный как Latin-1), если вы не установите набор символов, браузер по умолчанию будет использовать UTF-8. Думайте об этом как о выводе китайского языка, а затем о том, чтобы попросить синтаксический анализатор языка обработать его как японский, он никогда не поймет! Заголовок выглядит следующим образом: -
header("Content-Type: text/html; charset=ISO-8859-1");
Другой возможной причиной является Метка порядка байтов (BOM) .
Если ваш сценарий случайно вывод каких-то пустых данных до того, как это может добавить эти невидимые символы.
Есть множество ответов по спецификациям на переполнение стека, поэтому я не буду их повторять.
Обычно я бы сказал, запустите через W3 C Средство проверки интернационализации , но ваша страница, кажется, убивает его (что может быть связано с firebase). Может быть, вы могли бы записать необработанный вывод в файл и прогнать его таким образом?