Comment décoder cmd sortie correctement?

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 sortie contient russe lettres, qui ne peut être décodé correctement avec tous les encodages ce que j'ai essayé. S'il vous plaît aider.

J'ai essayé:

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

mais aucune aide.

des idées?

  • Regardez ce que vous faites! Vous n'êtes pas trans-codage quoi que ce soit. Si vous utilisez l'un de UTFs, vous obtenez tout simplement exactement la même que la chaîne d'origine. Votre "original" est déjà une chaîne! Et il devrait déjà être la chaîne de droite, check it up. Plus généralement, vous avez besoin de lire des octets brutes (pas de caractères!) et puis l'encoder ensuite, en supposant que certains d'encodage. Codant pour faire une chaîne de tableau de byte, et inversement, pas de chaîne de chaîne de caractères.
  • La conversion de la chaîne après la lecture, il est trop tard. Vous devez attribuer le startInfo.StandardOutputEncoding de la propriété. Essayez une page de code russes, afin 1251, 855, 866, 20866. Passer ce nombre à CultureInfo.GetCulture(). Yay pour l'Unicode.
  • Wouldnt être mauvais pour la balise de la réponse correcte.
  • Solution générale est ici: stackoverflow.com/questions/5910573/...
InformationsquelleAutor ggcodes | 2013-05-29