gpt4 book ai didi

带有±字符的Python subprocess.check_output

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:26 26 4
gpt4 key购买 nike

我正在使用 subprocess.check_output 调用 MS DOS 命令行应用程序以从应用程序返回 stdout 字符串。

check_ouput 的返回是关于刚刚运行的命令的信息,一个新行包含我之后的结果和另一个新行。具体来说,返回字符串如下所示:

b'0ms: Channel.#0.Range.SelectedItem?\r\n\xf150 mV\r\n'

问题是第一个换行符之后的\xf1,该字符本应是 ± (\xb1),但总是返回为 ñ (\xf1),我不知道为什么。

如果我在命令行中手动运行该命令,我会得到预期的 ±,所以我认为命令行应用程序没有问题。

在短期内,我可以用\xb1 替换我找到的任何\xf1,但它是一个 hack,我宁愿阻止它而不是解决它。

有人知道为什么命令行和 python 之间的字符不同吗?

最佳答案

MS DOS 应用程序使用与 Windows Latin (cp1252) 或文明世界(web + unix:utf-8)不同的字符编码——为了向后兼容,它们使用 CP850 代码页。

要从该字符串中获得正确的 Python unicode,您所要做的就是使用 CP850 编码对其进行解码,例如:

>>> print '0ms: Channel.#0.Range.SelectedItem?\r\n\xf150 mV\r\n'.decode("cp850")
0ms: Channel.#0.Range.SelectedItem?
±50 mV

关于带有±字符的Python subprocess.check_output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com