【发布时间】:2014-04-18 05:56:27
【问题描述】:
我有一个处理 vbscript 并产生输出的应用程序。
private static string processVB(string command, string arguments)
{
Process Proc = new Process();
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.StartInfo.RedirectStandardError = true;
Proc.StartInfo.RedirectStandardInput = true;
Proc.StartInfo.StandardOutputEncoding = Encoding.UTF8;
Proc.StartInfo.StandardErrorEncoding = Encoding.UTF8;
Proc.StartInfo.FileName = command;
Proc.StartInfo.Arguments = arguments;
Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
Proc.Start();
string output = Proc.StandardOutput.ReadToEnd();
string error = Proc.StandardError.ReadToEnd();
if (String.IsNullOrEmpty(output) && !String.IsNullOrEmpty(error))
{
output = error;
}
//Console.Write(ping_output);
Proc.WaitForExit();
Proc.Close();
return output;
}
我想我已经正确设置了与 Encoding 属性相关的所有内容。 processVB 方法将获取命令作为 VBscript 文件及其参数。
正在处理该 VBScript 文件的 C# 方法 processVB 现在产生如下输出。
“����?”
但我应该得到原文
"äåéö€"
我已正确设置编码。但我无法做到这一点。
我做错了什么?
【问题讨论】:
-
你见过这个吗? stackoverflow.com/questions/7520706/… - 我认为这正是你的问题。
-
是的,我看过。感谢您的参考。不,它没有解决我的问题。
-
链接解释了问题的根源。
-
CurrentEncoding 属性在启动进程后对 StandardOutput 有什么作用?
-
@cellik: System.Text.UTF8Encoding