小编Fre*_*doz的帖子

Windows命令行参数编码是什么?

Windows 使用什么编码来传递给在 cmd.exe 窗口中启动的程序的命令行参数?

命令行参数的编码似乎不受使用的控制台代码页设置的影响chcp(我将其设置为UTF-8,代码页65001并使用Lucida控制台字体。)

如果我将 UTF-8 文件中编码为十六进制 E28093 的 EN DASH 粘贴到命令行中,它会在 cmd.exe 窗口中正确显示。但是,当它传递给程序时,它似乎被转换为十六进制 96(ANSI 表示形式)。如果我将西里尔字符粘贴到命令行中,它们也会正确显示,但在程序中显示为问号(十六进制 3F。)

如果我复制命令行并将其粘贴到文本文件中,则生成的文件是 UTF-8;它包含与源文件相同的 EN DASH 和西里尔字符编码。

看起来粘贴到 cmd.exe 窗口中的字符是使用通过 选择的代码页捕获和显示的chcp,但在将字符作为参数传递给程序之前,使用了一些 ANSI 代码页将字符转换为不同的编码。显然无法转换的字符会默默地转换为问号。

因此,如果我想正确处理程序中的命令行参数,我需要确切地知道参数的编码是什么。例如,如果我希望将命令行参数与从文件读取的已知 UTF-8 数据进行比较,我需要将参数从正确的编码转换为 UTF-8。谢谢。

windows encoding command-line utf-8

5
推荐指数
1
解决办法
1965
查看次数

处理 Win32::API 返回的宽字符值

宽字符和 win32::api 中提供的答案适用于utf-16传递给 Win API。但是如何转换Win API返回的utf16 字符串?(我正在尝试使用GetCommandLineW)。

我已经尝试了这两种方法Unicode::StringEncode::decode但都没有成功。我猜也许数据需要先打包或解包,但是如何呢?

之后,下一个问题是如何处理像CommandLineToArgvW.

谢谢你的帮助。

perl winapi

5
推荐指数
1
解决办法
260
查看次数

标签 统计

command-line ×1

encoding ×1

perl ×1

utf-8 ×1

winapi ×1

windows ×1