事实是,在非英语版本的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代码页。
哦,有GetACP和GetOEMCP函数。
关于c++ - 如何获得Windows XP GUI默认代码页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10702103/