gpt4 book ai didi

Python unicode popen 或 Popen 错误读取 unicode

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:49 26 4
gpt4 key购买 nike

我有一个生成以下输出的程序:

             ┌───────────────────────┐
│10 day weather forecast│
└───────────────────────┘
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
Tonight Sep 27 Clear 54 0 %
Tue Sep 28 Sunny 85/61 0 %
Wed Sep 29 Sunny 86/62 0 %
Thu Sep 30 Sunny 87/65 0 %
Fri Oct 01 Sunny 85/62 0 %
Sat Oct 02 Sunny 81/59 0 %
Sun Oct 03 Sunny 79/56 0 %
Mon Oct 04 Sunny 78/58 0 %
Tue Oct 05 Sunny 81/61 0 %
Wed Oct 06 Sunny 81/61 0 %

Last Updated Sep 27 10:20 p.m. CT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

这在本网站上的格式似乎不正确,但顶部的下行和底部的上行会导致 unicode 错误。

这是 os.popen 的代码示例

>>> buffer = popen('10day', 'r').read()
Traceback (most recent call last):
File "/home/woodnt/python/10_day_forecast.py", line 129, in <module>
line_lower(51)
File "/home/woodnt/python/lib/box.py", line 24, in line_lower
print upper_line * len
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-50: ordinal not in range(128)
>>> print buffer

┌───────────────────────┐
│10 day weather forecast│
└───────────────────────┘

>>>

subprocess.Popen 也是一样的:

f = Popen('10day', stdout=PIPE, stdin=PIPE, stderr=PIPE)
o, er = f.communicate()
print o

┌───────────────────────┐
│10 day weather forecast│
└───────────────────────┘

print er
Traceback (most recent call last):
File "/home/woodnt/python/10_day_forecast.py", line 129, in <module>
line_lower(51)
File "/home/woodnt/python/lib/box.py", line 24, in line_lower
print upper_line * len
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-50: ordinal not in range(128)

是否可以在没有大量“幕后”工作的情况下实现这一点?我刚学编程,从python开始

最佳答案

我想说从控制台运行你的程序应该可以正常工作,因为 Python 可以猜测终端窗口的控制台编码(美国 Windows 上的 cp437),但是当通过管道运行时,Python 使用默认的 ascii。尝试将您的程序更改为 encode 所有 Unicode 输出为显式编码,例如:

打印(upper_line * len).encode('cp437')

然后当您从管道中读取它时,您可以解码回 Unicode 或直接打印到终端。

关于Python unicode popen 或 Popen 错误读取 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810302/

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