Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.GetEncoding("utf-8");
Console.WriteLine("开始测试starttest전소미123");
string input = Console.ReadLine();
Console.WriteLine(input);
Console.ReadKey();
Console.ReadKey();
运行这些代码时,我得到的字符串完全相同,如下所示
并且如果我没有设置InputEncoding或OutputEncoding或两者都不设置,我将无法获得正确的字符。
但是我无法在winform程序中设置Console.OutputEncoding。它在mscorlib.dll中引发了类型为'System.IO.IOException'的未处理异常。此错误发生在下面的第二行,
Console.OutputEncoding = Encoding.Unicode;
代码
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
Process process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = $".\\test.exe",
Arguments = "",
CreateNoWindow = true,
UseShellExecute = false,
ErrorDialog = true,
//AutoFlush = true,
//RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
StandardOutputEncoding = Encoding.GetEncoding("utf-8"),
},
};
process.Start();
string text = process.StandardOutput.ReadLine();
我在网上搜索了类似的问题,并进行了数小时的测试,只是无法弄清。
您为exe文件使用什么文本编辑器和编码?我认为例如记事本的默认编码器是ANSI,我知道它不支持亚洲符号。如果要更改记事本的编码器,请单击文件->另存为,然后可以将保存在左侧的编码更改为保存按钮,并将编码更改为UTF-8或Unicode。