Bin*_*Mee 6 c# encoding process utf-8
我有一个处理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;
}
我想我已经设置了与编码属性相关的所有内容.processVB方法将获取命令作为VBscript文件及其参数.
C#方法processVB正在处理现在生成输出的VBScript文件,如下所示.
"?"
但我应该得到原文
"äåéö€"
我已正确设置编码.但我无法做到正确.
我究竟做错了什么?
问题是控制台默认不是 UTF-8。它在与 Windows 中的区域设置相同的代码页中运行。解决此问题的一个简单方法是使用chcp控制台命令。例子:
chcp 65001 && yourScript.vbs
这将导致输出采用 UTF-8 格式,并确保您可以从 .NET 应用程序中正确读取它。
请注意,我已经使用bat脚本而不是 VB 脚本对此进行了测试,但如果 VB 脚本确实支持 UTF-8,那么它应该可以正常工作。另外,您可能必须显式调用 VB 脚本执行引擎,而不仅仅是yourScript.vbs. 但您应该能够自己轻松解决这个问题:)
| 归档时间: | 
 | 
| 查看次数: | 6069 次 | 
| 最近记录: |