Strip Byte Order Mark z łańcucha w C #

Przeczytałem podobne posty na ten temat i nie odpowiadają na moje pytanie.

W języku C # mam ciąg, który otrzymuję z WebClient.DownloadString. Próbowałem ustawić client.Encoding na nowe UTF8Encoding (false), ale to nie robi różnicy - wciąż kończę się znacznikiem kolejności bajtów dla UTF-8 na początku ciągu wynikowego. Muszę to usunąć (aby przetworzyć wynikowy XML z LINQ) i chcę to zrobić w pamięci.

Mam więc ciąg rozpoczynający się od x00EF x00BB x00BF i chcę go usunąć, jeśli istnieje. Teraz używam

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

ale to po prostu źle się czuje. Próbowałem wszystkich rodzajów kodu ze strumieniami, GetBytes i kodowaniami i nic nie działa. Czy każdy może podać „właściwy” algorytm, aby usunąć BOM z łańcucha?

Dziękuję Ci!

questionAnswers(11)

yourAnswerToTheQuestion