Python:如何处理只能使用 ascii 字符的子进程?

问题描述 投票:0回答:0

我正在为 Linux 中的命令行实用程序编写包装器/前端。命令行实用程序是一个黑框,无法修改。它接受两个 ascii 字符串形式的输入,对它们做一些处理,然后输出一个新的 ascii 格式的字符串。为简单起见,我们假设它将两个字符串连接成一个字符串。问题是我需要在这个程序中使用非 ascii 字符(非英语字符等),如果我在 cli 中给它非 ascii 字符,它就会崩溃。

我的一个解决方案是将字符(一个普通的 python 字符串,我相信默认情况下是 utf-8)转换为它们的十六进制值,当然它们都是 ascii 字符(“编码”),将其输入程序,然后然后将十六进制的输出转换回 utf-8。我该怎么做?

我试过将非 ascii 字符传递到程序中,但它崩溃了。我也尝试过使用 .encode 将现有字符串编码为 ascii,但它要么出错,要么跳过一些对我的用例不起作用的字符。

这是我目前最好的尝试,但由于非 ascii 字符而崩溃

string1=bytes(user_input,'utf-8')
string2=bytes(user_input2,'utf-8')
output=subprocess.run(['/path/to/command'],input=string1+' '+string2,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in str(output.stdout).split('\\n'):
    print('Output is '+line)
python character-encoding
© www.soinside.com 2019 - 2024. All rights reserved.