gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:12:55 26 4
gpt4 key购买 nike

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

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

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

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

似乎粘贴到 cmd.exe 窗口中的字符是使用通过 chcp 选择的代码页捕获和显示的。 ,但某些 ANSI 代码页用于将字符转换为不同的编码,然后再将它们作为参数传递给程序。显然无法转换的字符会被默默转换为问号。

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

最佳答案

如果您的目标是比较 Unicode 字符,那么您应该调用 GetCommandLineW在您的程序中(或使用 wmain 以便 argv 使用 wchar_t),然后将此 UTF-16LE 命令行字符串转换为 UTF-8,反之亦然。
GetCommandLineA可能使用 CP_ACP 转换 Unicode 源字符串。

关于windows - Windows 命令行参数编码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44465412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com