У меня создалось впечатление, что XML поощряется быть записанным в Unicode в некотором кодировании Unicode, и что определенная кодировка Unicode определяется для содержания начальной метки порядка байтов. Без той метки порядка байтов Ваш файл правильно больше не кодируется в кодировании Unicode, и поэтому больше не исправляйте XML. Процессоры XML поощряются быть неумолимыми, сразу перестать работать на малейшей ошибке (такой как неправильное кодирование Unicode). Какие виды процессоров XML Вы надеетесь повреждать?
, Очевидно, разделяя метку порядка байтов из закодированного документа UTF-8 заставляет тот документ, казаться, быть закодированным ASCII (не Unicode), и некоторые текстовые процессоры способны только к использованию закодированных документов ASCII. Это то, с чем Вы работаете?
Просто разделите первые два байта с помощью любого Hex-редактора.
Какое выходное кодирование Ваш XSL установлен использовать? Какое кодирование является входным документом? Куда вход прибывает из, и где это был saved/uploaded/dowloaded тем временем?
XML и XSL должны значение по умолчанию к использованию UTF-8, если ничто иное не определяется. Но ясно, что-то идет не так, как надо здесь.
Одна вещь, которая могла бы произойти, XML подается веб-сервером, который установлен по умолчанию служить в ISO-8859-1, довольно хорошее значение по умолчанию... предварительный Unicode.
Немного вне темы, но очень поучительная статья Joel о текстовой кодировке была разоблачением мне. Существует много людей там, которые иначе очень умны о программировании, но кто сохраняется в размышлении, что существует такая вещь как "простой текст" или вызов их текста "ASCII" или "ANSI". Это - проблема, действительно необходимо справиться с тем, если Вы еще не имеете.
Детектор спецификации файла (бесплатное ПО для Windows) позволяет легко удалить отметку порядка байтов.