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

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,则会显示“错误的代码页”。

最佳答案

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

哦,有GetACPGetOEMCP函数。

关于c++ - 如何获得Windows XP GUI默认代码页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10702103/

10-13 02:50