GetUserName()返回的字符串编码

Tor*_*rek 1 python winapi encoding pywin32

如何获取用于GetUserNamewin32 API 返回的字符串的编码?我正在使用pywin32并返回一个8位字符串.在我的德语XP上,这个字符串显然是使用Latin-1编码的,但对于其他Windows安装可能不是这种情况.

我可以使用GetUserNameW,但我必须使用ctypes自己包装,如果有一个更简单的解决方案,我现在想避免使用它.

Dan*_*ker 5

您可以调用GetACP来查找当前ANSI代码页,这是非Unicode API使用的.您还可以使用MultiByteToWideChar,并将零作为代码页(在Windows标头中将CP_ACP定义为零)传递,以将代码页字符串转换为Unicode.


Jas*_*hen 5

我意识到这并没有直接回答你的问题,但我强烈建议你GetUserNameW像你提到的那样解决使用 Unicode-clean 的麻烦。

非宽命令在不同的 Windows 版本上的工作方式不同(例如 ME,虽然我承认这个例子很旧!),所以恕我直言,值得把它弄对。

做过很多多语言的Windows开发,虽然宽API可以加一层翻译或换行(如你所建议!),但还是值得的。