3 Stimmen

C# Konvertieren von Byte-Array in String, mit Präambel oder Standard-Kodierung

Ich versuche, ein Byte-Array in eine Zeichenfolge zu konvertieren. Das Byte-Array enthält eine Präambel (wenn der verwendete Encoder eine solche hatte), und Sie müssen die Standardkodierung angeben, wenn keine Präambel im Byte-Array gespeichert ist.

Mein Code sieht wie folgt aus

public static string ArrayToStringUsingPreambleOrDefaultEncoder(byte[] bytes, Encoding defaultEncoder, out Encoding usedEncoder) {
  using (var mem = new MemoryStream(bytes))
  using (var reader = new StreamReader(mem, defaultEncoder, true)) {
    string result = reader.ReadToEnd();
    usedEncoder = reader.CurrentEncoding;
    return result;
  }
}

Aber es funktioniert nicht so, wie ich es erwartet hätte. Wie kann ich einen StreamReader dazu bringen, die in der Präambel angegebene Kodierung oder eine Standardkodierung zu verwenden, wenn keine Präambel gefunden wird? Muss ich wirklich die Präambel von ALLEN bekannten Kodierern manuell mit dem Anfang des Arrays vergleichen, um den richtigen zu finden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X