Где-то в этом беспорядке неразрывные пробелы из шаблона (ов) HTML кодируются как ISO-8859-1, поэтому они некорректно отображаются как символ "Â"
Тогда это будет кодировка UTF-8, а не ISO-8859-1. Символ неразрывного пробела - это байт 0xA0 в ISO-8859-1; при кодировании в UTF-8 это будет 0xC2,0xA0, что, если вы (неправильно) рассматриваете его как ISO-8859-1, выглядит как "Â "
. Это включает в себя трейлинг, который вы можете не заметить; если этого байта нет, значит, что-то еще испортило ваш документ, и нам нужно посмотреть дальше, чтобы узнать, что.
Что такое регулярное выражение, как работает шаблон? Может показаться, что где-то задействован надлежащий HTML-парсер, если ваши строки
(правильно) превращаются в символы U + 00A0 для неразрывных пробелов. Если это так, вы можете просто обработать свой шаблон непосредственно в DOM и попросить его сериализовать, используя кодировку ASCII, чтобы сохранить символы не-ASCII в качестве ссылок на символы. Это также избавит вас от необходимости выполнять постобработку регулярных выражений для самого HTML, что всегда очень сложное дело.
Ну, во всяком случае, сейчас вы можете добавить один из следующих пунктов в <head>
вашего документа и посмотреть, заставляет ли он его выглядеть прямо в браузере:
- для HTML4:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- для HTML5:
<meta charset="utf-8">
Если вы это сделали, то любая остающаяся проблема - это ошибка ActivePDF.