【发布时间】:2015-01-03 15:30:28
【问题描述】:
我正在使用 .NET ProcessStartInfo.RedirectStandardOutput 和 Process.BeginOutputReadLine 来捕获另一个程序(特别是 youtube-dl.exe)的标准输出并将它们保存到字符串变量中。
但是结果变量只包含我的语言的常用字符,例如繁体中文和英文字母;带有重音符号的韩语或拉丁字母等字符完全消失了。
我File.WriteAllText-ed 结果变量并使用多个文本编辑器检查了文件,所以我确定它们丢失了,而不是它们存在并且只是无法通过控制台窗口显示。
在 Windows 命令提示符中直接执行 youtube-dl 会显示包含这些外来字符的完整消息。
我的youtubeDL_process.OutputDataReceived 很简单:
(s, e) => {
if(!string.IsNullOrWhiteSpace(e.Data)) this._filename = e.Data;
}
如何使重定向后的带外来字符的标准输出字符串完整,就像在命令提示符中直接生成的一样?
【问题讨论】:
标签: .net redirect process character-encoding stdout