Byte Order Mark von String in C # entfernen

Ich habe ähnliche Beiträge dazu gelesen und sie beantworten meine Frage nicht.

In C # habe ich eine Zeichenfolge, die ich von WebClient.DownloadString erhalte. Ich habe versucht, client.Encoding auf new UTF8Encoding (false) zu setzen, aber das macht keinen Unterschied. Am Anfang der Ergebniszeichenfolge wird immer noch eine Bytereihenfolge für UTF-8 angezeigt. Ich muss dieses entfernen (um das resultierende XML mit LINQ zu analysieren) und möchte dies im Speicher tun.

Ich habe also eine Zeichenfolge, die mit \ x00EF \ x00BB \ x00BF beginnt, und ich möchte diese entfernen, wenn sie existiert. Im Moment benutze ich

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

aber das fühlt sich einfach falsch an. Ich habe alle Arten von Code mit Streams, GetBytes und Codierungen ausprobiert, und nichts funktioniert. Kann jemand den "richtigen" Algorithmus bereitstellen, um eine Stückliste aus einer Zeichenfolge zu entfernen?

Vielen Dank!

Antworten auf die Frage(11)

Ihre Antwort auf die Frage