问题是控制台和 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
它会给出“错误的代码页”。