【转载】C# Process运行程序时Console Output的中文乱码

在听 - 周杰倫 蒲公英的约定

最近睡眠质量不是很好,晚上23点困得不行,经常会怀念之前的时光,说话常常词不达意……大概是上了年纪吧。

Jay Chou发新专了,不是很对我的胃口。点开油管,他的老歌倒是很动听,今晚油管还推了杨丞琳和张韶涵的歌,emmm……是心动的感觉。

啊这,怎么这个点了,Lycoris和白皇都更新了……

嘛,赶紧复制黏贴完,洗洗上床看Lycoris,反正这篇的情况和我的一模一样。

是这样的,我嘛希望在C# Windows Form中打印控制台程序的Output,在Powershell里中文显示的好好的,到了C#程序里变成中文乱码了。

好久没处理乱码的情况了,用乱码恢复看了眼,是用GBK编码处理UTF-8编码产生的乱码,本来想反过来用GBK编码重新读入字符串后用UTF-8重新处理bytes,但是处理后得到的字符串中有部分文字已经无法恢复[🤦‍捂脸],反手打开搜索引擎,找到一篇情况和我的一模一样的。

解决方案

process(class Process)加上标准输出的格式就可以了。

1
process.StartInfo.StandardOutputEncoding = Encoding.UTF8;

参考资料

  1. C# 运行控制台程序中文乱码
  2. Process Class (System.Diagnostics) - Microsoft Docs
好耶,复制完了,白皇更新了[🤦‍sad]