[英]Unicode issue with Python3.7 and Scheduled Tasks
我正在嘗試使用子進程收集 Python 中的計划任務的名稱
import subprocess
import sys
encoding = 'utf-8'
cmd = r'''$env:PYTHONIOENCODING = "%s";py -3 -c "print('® ¾ ü_ä_ö')"'''% encoding
#cmd = r'''$env:PYTHONIOENCODING = "%s"; schtasks /query ''' % encoding
data = subprocess.check_output(["powershell", "-C",cmd])
print((data.decode(encoding)))
當我執行虛擬 cmd(打印 Unicode)時,這工作正常。 但是當我嘗試運行 schtasks 命令時(一些任務,如 intel 和其他任務使用 unicode 符號,如任務名稱中的 ® 或類似 ü_ä_ö 的字符)。
這給了我以下錯誤:
UnicodeDecodeError:“utf-8”編解碼器無法解碼 position 1228 中的字節 0x81:無效的起始字節
如果我從 cmd 提示符或 powershell 直接運行命令,則顯示正常:
C:\Users\ricar\Google Drive\Bifrost\Collectors>schtasks /query
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
Adobe Acrobat Update Task 12/4/2020 8:00:00 AM Ready
AdobeAAMüpdater-1.0-MicrosoftAccount-ric 12/4/2020 2:00:00 AM Ready
AdobeGCInvoker-1.0 12/5/2020 12:30:00 AM Ready
HPPSDrTelemetryWatch© 12/12/2020 12:00:00 AM Ready
Intel-IMSS® N/A Ready
任何想法我做錯了什么?
謝謝
您確定schtasks
output 在 utf-8 中嗎?
0x81 在 IBM CP437 和 IBM CP850 / IBM CP858 編碼中是 ü。
為了檢查這一點,實用的方法是使用repr()
或使用輸出字符代碼的decode(encoding, errors=...)
選項之一打印出字符串(例如decode(encoding, errors='xmlcharrefreplace')
),然后將其與編碼表匹配以查看哪個匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.