Убрать метку порядка байтов из строки в C # - PullRequest
39 голосов
/ 23 августа 2009

Я читал похожие посты по этому вопросу, и они не отвечают на мой вопрос.

В C # у меня есть строка, которую я получаю из WebClient.DownloadString. Я попытался установить client.Encoding в новое UTF8Encoding (false), но это не имело никакого значения - я все равно получаю метку порядка байтов для UTF-8 в начале строки результата. Мне нужно удалить это (чтобы проанализировать полученный XML с помощью LINQ) и сделать это в памяти.

Итак, у меня есть строка, которая начинается с \ x00EF \ x00BB \ x00BF, и я хочу удалить ее, если она существует. Прямо сейчас я использую

if (xml.StartsWith(ByteOrderMarkUtf8))
{
    xml = xml.Remove(0, ByteOrderMarkUtf8.Length);
}

но это просто неправильно. Я пробовал все виды кода с потоками, GetBytes и кодировками, и ничего не работает. Может ли кто-нибудь предоставить «правильный» алгоритм для удаления спецификации из строки?

Спасибо!

Ответы [ 11 ]

2 голосов
/ 28 августа 2014
StreamReader sr = new StreamReader(strFile, true);
XmlDocument xdoc = new XmlDocument();
xdoc.Load(sr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...