Похоже, что ваш заголовок считает, что это ISO-8859-1, а из-за поведения (заканчивающегося двумя символами вместо одного) кажется, что по крайней мере часть вашего контента уже UTF-8. Это похоже на классическую «проблему двойного кодирования utf-8», когда контент, уже закодированный как UTF-8, снова кодируется как UTF-8. Измените заголовок на UTF-8, и он может начать работать. Вы можете всегда пытаться выполнить свой код как UTF-8, а затем как он говорит (поскольку, если это не UTF-8, вы получите ошибку синтаксического анализатора).
Наконец, обратите внимание, что кодировка XML-файла переопределяется заголовком HTTP, если он подается через HTTP.
Не уверен, относится ли это к вашим потребностям, но мне нравится эта статья о анализе XML любой ценой . В качестве примера я укажу, что мне также нравится feedparser (Python) как лучший XML-анализатор XML любой ценой (отлично подходит для идей, но не для вашей ситуации).