我正在尝试编写一个控制台应用程序,可以接受文件名参数,并希望它能够处理Unicode文件名。问题是我不知道如何测试它。
如何将Unicode参数传递给控制台应用程序?
我尝试创建一个调用程序并传递一些Unicode字符的Unicode批处理文件,但它不起作用;命令提示符无法启动该程序,因为它在文件名中遇到了null字符。我尝试将代码页更改为65001,并在命令行上使用Alt键输入Unicode字符,但也没有成功。
下面是一个示例程序。我正在寻找一种方法来获得以下输出:
如何将Unicode参数传递给控制台应用程序?
我尝试创建一个调用程序并传递一些Unicode字符的Unicode批处理文件,但它不起作用;命令提示符无法启动该程序,因为它在文件名中遇到了null字符。我尝试将代码页更改为65001,并在命令行上使用Alt键输入Unicode字符,但也没有成功。
下面是一个示例程序。我正在寻找一种方法来获得以下输出:
C:\> unicodeargtest Foobar
46, 0, 6f, 0
// UnicodeArgTest.cpp
#define UNICODE
#include <tchar.h>
#include <stdio.h>
int wmain (int argc, wchar_t**argv) {
printf("%x, %x, %x, %x\n", argv[1][0], argv[1][1], argv[1][2], argv[1][3]);
}
CHCP
不是正确的方法。65001
是 UTF-8 的代码页,但 Windows 使用 UTF-16 进行 Unicode 编码。CHCP
只适用于双字节字符集,而 UTF-8 可以使用多达 4 个字节。这在从 NT 3.1 到 8 版本中都是一样的。 - MSalters