繁体   English   中英

命令行参数的编码 C#

[英]Encoding of command line arguments C#


我在 WPF 应用程序中有一个字符串,我使用 Process.StartInfo.Arguments 属性将其作为命令行参数传递给本机应用程序。 我知道 C# 以 UTF-16 编码存储字符串。 而且我也知道本机应用程序对编码没有任何作用,并希望它是我所在国家/地区的默认值 windows-1251。 所以我们在 C# 应用程序中有 UTF-16,在本机应用程序中有 1251。 这实际上以某种方式起作用。


问题是转换发生在何处以及它的可靠性如何。 有没有办法强制 Process 类对命令行参数使用特定的编码?

在 Unicode 操作系统(即任何现代版本的 Windows)上, Process.Start方法调用 Win32 CreateProcessW函数,该函数也使用 UTF-16 表示作为命令行参数。

字符转换(如果需要)由操作系统在启动进程时执行。 如果本机应用程序的入口点接受 Unicode 命令行,则不需要转换,否则操作系统会将其转换为 ANSI 字符串。 我不相信你作为调用者有能力控制这里使用哪个代码页。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM