问题描述
在Python中,我们经常不得不使用subprocess.Popen
将外部工具的输出从字节转换为字符串。我一直在使用UTF-8而不考虑太多,到目前为止,我还没有遇到任何问题。我遇到了一些人使用ASCII代替的代码,这让我开始思考如何知道要使用哪种编码,这有关系吗?
对于简单的字符串,似乎没有什么不同,例如:
>>> subprocess.check_output(['git','rev-parse','--short','HEAD'],encoding='ASCII')
'4091146\n'
>>> subprocess.check_output(['git',encoding='utf-8')
'4091146\n'
我了解到UTF-8是一个较大的字符集,因此“特殊”字符不能编码为ASCII:
>>> "Büster".encode('utf-8')
b'B\xc3\xbcster'
>>> "Büster".encode('ascii')
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 1: ordinal not in range(128)
我猜编码取决于外部程序,那么我怎么知道要使用哪个编码?始终采用UTF-8是否安全?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)