【发布时间】:2023-03-03 06:54:21
【问题描述】:
尝试创建一个 twitter 机器人来读取行并发布它们。通过我的共享服务器空间上的 virtualenv 使用 Python3 和 tweepy。这是代码中似乎有问题的部分:
#!/foo/env/bin/python3
import re
import tweepy, time, sys
argfile = str(sys.argv[1])
filename=open(argfile, 'r')
f=filename.readlines()
filename.close()
这是我得到的错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe in position 0: ordinal not in range(128)
错误专门指向f=filename.readlines() 作为错误的来源。知道可能出了什么问题吗?谢谢。
【问题讨论】:
-
See this post,它有两个非常有用的答案,您应该尝试一下。
-
我使用了encoding='iso-8859-1',解决了我的问题
-
@hsinghal:ISO-8859-1(又名 latin-1)将始终有效,但通常错误。问题是它可以解码来自任何编码的任何字节,但如果原始文本不是真正的 latin-1,它将解码为垃圾。您需要知道真正的编码,而不仅仅是猜测; UTF-8 主要是自检的,因此它不太可能解码二进制乱码,但 latin-1 会很乐意将二进制乱码解码为文本乱码,并且从不低声抱怨。
-
@ShadowRanger 感谢您的解释。它增加了我目前的知识。
标签: python python-3.x unicode tweepy sys