Модуль 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 «понижает» проблемные символы, то есть заменяет такие символы вопросительным знаком.
