gpt4 book ai didi

python - 在事先不知道代码页的情况下将原始字节字符串转换为 Unicode

转载 作者:可可西里 更新时间:2023-11-01 11:13:12 24 4
gpt4 key购买 nike

当使用右键单击菜单上下文时,windows 将文件路径作为原始(字节)字符串类型传递。

例如:

path = 'C:\\MyDir\\\x99\x8c\x85\x8d.mp3'

我的应用程序中的许多外部包都需要 unicode 类型的字符串,因此我必须将其转换为 unicode

如果我们事先知道原始字符串的编码(在示例中,它是 cp1255),那将很容易。但是我不知道世界各地的每台计算机将在本地使用哪种编码。

如何将 string 转换为 unicode?也许需要使用 win32api

最佳答案

不知道为什么您可能会得到 DOS 代码页 (862) 而不是 ANSI (1255) - 右键单击​​选项是如何设置的?

无论哪种方式 - 如果您需要在参数中接受任意 Unicode 字符,则无法通过 Python 2 的 sys.argv 来实现。此列表由非 Unicode 版本的 Win32 API (GetCommandLineA) 返回的字节填充,并且该编码永远不是 Unicode 安全的。

包括 Java 和 Ruby 在内的许多其他语言都在同一条船上;该限制来自 Microsoft C 运行时对 C 标准库函数的实现。要修复它,可以在 Windows 上调用 Unicode 版本 (GetCommandLineW),而不是依赖跨平台标准库。 Python 3 可以做到这一点。

与此同时,对于 Python 2,您可以通过自己调用 GetCommandLineW 来完成,但这并不是特别好。如果你想要 Windows 风格的参数拆分,你也可以使用 CommandLineToArgvW。您可以使用 win32 扩展或只是简单的 ctypes 来做到这一点。

Example (尽管最好跳过将 Unicode 字符串编码回 UTF-8 字节的步骤)。

关于python - 在事先不知道代码页的情况下将原始字节字符串转换为 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com