在Python 3.4下,我使用winreg.QueryValueEx()
從註冊表中獲取鍵值,以便將其與文本文件進行比較。 我遇到一個問題,即在REG_BINARY
鍵值爲bytes
,但它也有Unicode值:_winreg.QueryValueEx返回「混合型」二進制值
- 預期的註冊表項值 - 52 50 43 46 01 1B 00 00 00 FF FF FE 04 46 00 00 6C 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中的一個錯誤。
希望得到任何幫助和提示,以便將它統一爲單一類型。 謝謝!
爲什麼你認爲粗體值有問題?你想用失敗的返回值做什麼?你可以學習[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)並創建一個[Minimal,Complete,and Verifiable](http://stackoverflow.com/help/) mcve)的例子。這使我們更容易幫助你。 –
我預計這些值是\ x52 \ x50 \ x43 \ x46而不是RPCF,例如 - 所有字節格式相同。 增加了我使用返回值的信息。 –
這些值實際上是相同的。你只是看到python如何顯示字符串與字節的工件。 –