Wie zu entschlüsseln cmd output korrekt?

ProcessStartInfo startInfo = new ProcessStartInfo("CMD.exe");
startInfo.Arguments = "/c " + URL;
Process p = new Process();
startInfo.RedirectStandardInput = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
p = Process.Start(startInfo);
string original = p.StandardOutput.ReadToEnd();
string result1 = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(original));
string result2 = Encoding.BigEndianUnicode.GetString(Encoding.BigEndianUnicode.GetBytes(original));
string result3 = Encoding.Unicode.GetString(Encoding.Unicode.GetBytes(original));
string result4 = Encoding.UTF32.GetString(Encoding.UTF32.GetBytes(original));
string result5 = Encoding.UTF7.GetString(Encoding.UTF7.GetBytes(original));
string result6 = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(original));

cmd Ausgabe enthält Russischen Briefe, dann kann das nicht richtig dekodiert, mit allen Codierungen, was ich versucht habe. Bitte helfen Sie.

Habe ich versucht:

startInfo.StandardOutputEncoding = Encoding."all possible encodings";

aber keine Hilfe.

irgendwelche Ideen?

Schauen Sie, was Sie tun! Sie sind nicht trans-coding nichts. Wenn Sie eine der UTFs, erhalten Sie einfach genau das gleiche wie original-string. Ihr "original" ist bereits ein string! Und es sollte schon den richtigen string, überprüfen Sie es. Generell benötigen Sie zum Lesen von raw-bytes (nicht Zeichen!) und dann codieren dann vorausgesetzt, einige Codierung. Codierung machen Sie einen string von byte-array und Umgekehrt, nicht als string aus string.
Konvertieren der Zeichenfolge, nachdem Sie gelesen haben, ist es zu spät. Müssen Sie die Zuweisung der startInfo.StandardOutputEncoding Eigenschaft. Versuchen Sie, einen Russischen code-Seite, die um 1251, 855, 866, 20866. Übergeben Sie die Anzahl an CultureInfo.GetCulture(). Yay für Unicode.
Wäre nicht schlecht zu tag die richtige Antwort.
Die Allgemeine Lösung ist hier: stackoverflow.com/questions/5910573/...

InformationsquelleAutor ggcodes | 2013-05-29

Schreibe einen Kommentar