Модуль XML в PHP поддерживает набор символов » Юникода через
разные кодировки символов. Модуль работает с двумя типами
кодировок символов: исходная кодировка
и целевая кодировка.
Внутреннее представление документа в PHP кодируется в кодировке
UTF-8
.
Исходное кодирование выполняется при анализе
XML-документа. Исходную кодировку указывают, когда
создают XML-анализатор (исходную кодировку
нельзя изменить позже, во время работы XML-анализатора).
Поддерживаются исходные кодировки ISO-8859-1
,
US-ASCII
и UTF-8
. Первые две —
однобайтные кодировки, что означает, что каждый символ представлен одним байтом.
Кодировка UTF-8
умеет кодировать символы, которые состоят
из переменного числа битов (вплоть до 21), одним, двумя, тремя или четырьмя байтами.
По умолчанию как исходную PHP использует кодировку ISO-8859-1
.
Целевое кодирование выполняется, когда PHP передаёт данные функциям-обработчикам XML. Когда создаётся XML-анализатор, PHP устанавливает целевую кодировку эквивалентной исходной кодировке, но целевую кодировку разрешается изменять в любой момент. Целевая кодировка затронет символьные данные, а также имена тегов и цели инструкций обработки.
XML-анализатор вернёт ошибку, если встретит символы вне диапазона символов исходной кодировки.
Если в разбираемом XML-документе PHP встречает символы, которые невозможно представить в целевой кодировке, PHP «понижает» проблемные символы, то есть заменяет такие символы вопросительным знаком.