代码之家  ›  专栏  ›  技术社区  ›  Torsten Marek

GetUserName()返回的字符串的编码

  •  1
  • Torsten Marek  · 技术社区  · 17 年前

    如何获取用于返回的字符串的编码 GetUserName

    GetUserNameW ,但我必须自己使用ctypes来包装它,如果有更简单的解决方案,我现在希望避免使用ctypes。

    4 回复  |  直到 17 年前
        1
  •  5
  •   Daniel Earwicker    17 年前

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

        2
  •  5
  •   Jason Cohen    17 年前

    我知道这不是直接回答你的问题,但我 强烈地 建议您克服使用Unicode clean的困难 GetUserNameW 正如你提到的。

    非wide命令在不同的Windows版本上的工作方式不同(例如,我承认这个示例已经过时了!),所以我认为正确使用它是值得的。

    在完成了大量多语言Windows开发之后,尽管WideAPI可以添加一层翻译或包装(正如您所建议的!),但这是值得的。

        3
  •  3
  •   Torsten Marek    17 年前

    好的,我现在用的是:

    >>> import win32api
    >>> u = unicode(win32api.GetUserName(), "mbcs")
    >>> type(u)
    <type 'unicode'>
    

    mbcs 是一种特殊的 standard encoding 在Windows中:

        4
  •  0
  •   Tommy Hui    17 年前