簡體   English   中英

與cp1252 consoless上utf-8中的進程通信

[英]communicate with a process in utf-8 on a cp1252 consoless

我需要通過以utf-8編碼向其標准輸入發送命令來控制程序。 為此,我使用subprocess.Popen()運行程序:

proc = Popen("myexecutable.exe", shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
proc.stdin.write(u'ééé'.encode('utf_8'))

如果我從cygwin utf-8控制台運行它,則它可以工作。 如果我從Windows控制台(編碼='cp1252')運行它,則無法正常工作。 有沒有一種方法可以使此工作而不必在要運行的每台計算機上安裝cygwin utf-8控制台? (注意:我不需要向控制台輸出任何內容)

我想知道子流程文檔中的此警告是否相關:

在Windows上需要指定shell = True的唯一原因是您希望執行的命令實際上內置在shell中,例如dir,copy。 您不需要shell = True來運行批處理文件,也不需要運行基於控制台的可執行文件。

為什么需要強制使用utf-8管道? 你不能做類似的事情

import sys
current_encoding = sys.stdout.encoding
...
proc.stdin.write(u'ééé'.encode(current_encoding))

編輯:在您編輯問題之前,我寫了這個答案。 我想這不是您想要的,是嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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