【问题标题】:Process return doesn't support French characters vb.NET进程返回不支持法语字符 vb.NET
【发布时间】:2015-01-14 02:19:58
【问题描述】:

我正在尝试用这个在 VB.NET 中启动一个进程:

    MyProcess = New Process
    With MyProcess.StartInfo
        .FileName = "CMD.EXE"
        .UseShellExecute = False
        .CreateNoWindow = True
        .RedirectStandardInput = True
        .RedirectStandardOutput = True
        .RedirectStandardError = True
    End With
    MyProcess.Start()
    MyProcess.BeginErrorReadLine()
    MyProcess.BeginOutputReadLine()

但答案很糟糕,因为不支持法语字符:

Private Sub MyProcess_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs) Handles MyProcess.OutputDataReceived
    Debug.Print("Process Return=" & e.Data)
    processOutput = processOutput + e.Data + vbCrLf
End Sub

返回类似:

Process Return=Vous ^tes d,j…connect, sur VPN。 Process Return=La commande a ‚t‚ex‚cut‚e。

有没有人知道如何获得所有法国角色? 谢谢你

【问题讨论】:

  • 在运行控制台应用程序时,您永远不能忽略代码页。您没有填写您的 SO 个人资料,因此我们不知道您来自哪里以及您可能使用的代码页。如果程序是由法国程序员编写的,那么他会期望代码页为 437。

标签: vb.net character-encoding


【解决方案1】:

我找到了一种方法: 我之前执行了这个命令:“chcp 1252” 现在它的工作!!!

【讨论】:

    【解决方案2】:

    也许您必须在开始该过程之前定义另一个编码?

    Imports System.Text
    
        MyProcess = New Process
        With MyProcess.StartInfo
            .FileName = "CMD.EXE"
            .UseShellExecute = False
            .CreateNoWindow = True
            .RedirectStandardInput = True
            .RedirectStandardOutput = True
            .RedirectStandardError = True
    
            .StandardErrorEncoding = Encoding.UTF8;  ' <- here
            .StandardOutputEncoding = Encoding.UTF8; ' <-
            ' or any other encoding.
        End With
        MyProcess.Start()
        MyProcess.BeginErrorReadLine()
        MyProcess.BeginOutputReadLine()
    

    但不能保证这会奏效。需要对过程进行测试才能看看..

    【讨论】:

    • 好的。对不起,我不使用控制台应用程序,所以帮不上什么忙。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多