1

问题是控制台和 gui 应用程序的 XP 代码页的非英语版本不同,例如,如果我在波兰语版本中在控制台中写入:

echo zażółć gęślą jaźń > somefile.txt

该文件的内容是:

zaľ˘† g©lĄ ja«ä 

如果我将其放入 cmd 文件中,则不会发生这种情况。那就是带有波兰字母的文本。但是,如果我创建一个使用非英语字符命名的文件或目录,那么无论它是从 cmd 还是从 finger 运行,效果总是乱码。

所以我的问题是如何获得其余 Windows 正在运行的第二个代码页。在我的情况下,这个 CP 是 1250 - 但是如何从 c++ 获得这个数字?

GetConsoleCP()并且GetConsoleOutputCP()都返回 852(这是正确的)并GetThreadLocale()给出 1045。

如果我尝试chcp 1045它会给出“错误的代码页”。

4

1 回答 1

3

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP- 此注册表项存储 ANSI 代码页号(在您的情况下应该是 1250)并HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP存储 OEM 代码页。

哦,还有GetACPGetOEMCP函数。

于 2012-05-22T13:58:23.490 回答