1

我需要stdin使用 UTF-8 编码将字符串发送到进程中。我这样做:

var info = new ProcessStartInfo("process.exe", "");

info.UseShellExecute = false;
info.CreateNoWindow = false;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;

var process = System.Diagnostics.Process.Start(info);

string stringToSend = "человек";
byte[] utf16Bytes = Encoding.Unicode.GetBytes(stringToSend);
byte[] utf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, utf16Bytes);

//But how do I send it now?
//process.StandardInput.WriteLine(stringToSend);    //Replaces all non-ASCII chars with ????

但是这个过程收到的是???? 而不是非英文字符。

PS。西里尔字母只是为了说明这个例子。

4

0 回答 0