如何获取windows xp gui默认代码页?

时间:2012-05-22 12:32:00

标签: c++ character-encoding windows-xp

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

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

该文件的内容为:

zaľ˘† g©lĄ ja«ä 

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

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

GetConsoleCP()GetConsoleOutputCP()都返回852(这是正确的)而GetThreadLocale()则返回1045。

如果我尝试chcp 1045,则会出现“错误的代码页”。

1 个答案:

答案 0 :(得分:3)

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

哦,还有GetACPGetOEMCP个功能。