Мне кажется, проблема в том, что когда вы используете кодировку utf-8, выходной файл начинается с префикса, обозначающего кодировку - последовательность из двух символов 0xEF
и 0xBB
, и этот префикс - это дополнительный пробел видя.
Вы можете проверить, так ли это, сохранив файл и проверив, есть ли префикс, и посмотреть, исчезнет ли проблема вручную, удалив префикс.
При использовании iso-8859-1 (или другой не-Unicode-кодировки) префикс отсутствует и, следовательно, нет проблем, но использование кодировок не-Unicode обычно является плохой идеей, поскольку создает проблемы при обработке символов не-ASCII.
Чтобы иметь выход UTF-8 без префикса, используйте XmlWriter
следующим образом:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new UTF8Encoding(false);
using (XmlWriter writer = XmlWriter.Create(response.OutputStream, settings)) {
// . . . apply the XSLT sending its output to 'writer' . . .
}
, где response
- это HttpResponse
обслуживаемого HTTP-запроса.