簡體   English   中英

Python3.7 和計划任務的 Unicode 問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM