与 cp1252 控制台上的 utf-8 进程通信
我需要通过将 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 控制台? (注意:我不需要向控制台输出任何内容)
I need to control a program by sending commands in utf-8 encoding to its standard input. For this I run the program using subprocess.Popen()
:
proc = Popen("myexecutable.exe", shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
proc.stdin.write(u'ééé'.encode('utf_8'))
If I run this from a cygwin utf-8 console, it works. If I run it from a windows console (encoding ='cp1252') this doesn't work. Is there a way to make this work without having to install a cygwin utf-8 console on each computer I want it to run from ? (NB: I don't need to output anything to console)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想知道 子流程文档 中的这个警告是否相关:
I wonder if this caveat, from the subprocess documentation, is relevant:
为什么需要强制使用 utf-8 管道?你不能做类似
编辑的事情吗:我在你编辑你的问题之前写了这个答案。我想这不是您要找的,是吗?
Why do you need to force utf-8 pipes? Couldn't you do something like
EDIT: I wrote this answer before you edited your question. I guess this is not what you're looking for, then, is it?