在 Python 3.4 下,我使用winreg.QueryValueEx()
从注册表中获取键值,以便将其与文本文件进行比较。我遇到了一个问题,REG_BINARY
关键值是bytes
但其中有 unicode 值:
- 预期的注册表键值 - 52 50 43 46 01 1b 00 00 00 ff fe ff 04 46 00 6c 00 61...
- 返回的键值 - b' RPCF \x01\x1b\x00\x00\x00\xff\xfe\xff \x04F\x00l\x00a\x00t\x00\x00\n \x00\x8b...'(加粗一些有问题的值)
- 尝试了一些 decode\encode 选项,都因混合类型而失败(例如
key_val.decode('utf-8')
返回{UnicodeDecodeError}'utf-8' codec can't decode byte 0xff in position 9: invalid start byte
)
我将返回的值(十六进制值列表)用于保存预期十六进制值的文本文件。这些粗体值不是预期的,因为它们不是十六进制格式,而且我事先不知道它们都可以做一些变通方法来专门处理它们。
在 Python 2.7 中,没有任何问题。我猜这与 Python 3 的分离str
甚至bytes
Python 3 中的 winreg 中的错误有关。
将不胜感激任何帮助和提示,以便将其统一为单一类型。谢谢!