[英]Decoding hex (ASCII) in python
我正在嘗試制作一個與Windows shell 交互的程序,所以我嘗試了以下命令:
output = subprocess.run('ipconfig', stdout = subprocess.PIPE)
output.stdout
output = os.popen('ipconfig','r',1).read()
但一些輸出(俄語)以十六進制(ASCII)表示:
Wireless LAN adapter \x81\xa5\xe1\xaf\xe0\xae\xa2\xae\xa4\xad\xa0\xef \xe1\xa5\xe2\xec 4:
應該
Wireless LAN adapter Беспроводная сеть 4:
我需要所有輸出信息都是文本。
順便說一句,當我在寫模式下使用os.popen('ipconfig', 'w')時,輸出是正確的,沒有十六進制值,只有文本,但我無法將其保存為整數。
有些人已經問過問題,我發現...
感謝 4 的幫助!
嘗試這個
output.decode('cp866')
子進程的輸出應該是一個bytes
對象(在 Python 3 中),使用您的示例:
b'Wireless LAN adapter \x81\xa5\xe1\xaf\xe0\xae\xa2\xae\xa4\xad\xa0\xef \xe1\xa5\xe2\xec 4:'.decode('cp866')
> 'Wireless LAN adapter Беспроводная сеть 4:'
一般來說,您需要知道您的系統使用的是哪種編碼, cp866
用於俄語,請查看https://docs.python.org/3/library/codecs.html#standard-encodings
您還可以查詢您的系統默認編碼
sys.getdefaultencoding()
如果匹配,您甚至不需要在調用bytes.decode
時指定它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.