python:unicodeEncodeError:“charpmap”编解码器无法编码字符“\u2026”

Posted

技术标签:

【中文标题】python:unicodeEncodeError:“charpmap”编解码器无法编码字符“\\u2026”【英文标题】:python : unicodeEncodeError: 'charpmap' codec can't encode character '\u2026'python:unicodeEncodeError:“charpmap”编解码器无法编码字符“\u2026” 【发布时间】:2015-04-08 13:56:08 【问题描述】:

我尝试分析我从 tweeter 获得的一些推文,但如果您有任何想法,我似乎有编码问题..

import json

#Next we will read the data in into an array that we call tweets.
tweets_data_path = 'C:/Python34/TESTS/twitter_data.txt'

tweets_data = []
tweets_file = open(tweets_data_path, "r")


for line in tweets_file:
    try:
        tweet = json.loads(line)
        tweets_data.append(tweet)
    except:
        continue

print(len(tweets_data))#412 tweets
print(tweet)

我错了: 文件“C:\Python34\lib\encodings\cp850.py”,第 19 行,在编码返回 codecs.charmap_encode(input,self.errors,encoding_map)[0] unicodeEncodeError:“charpmap”编解码器无法在位置 1345 编码字符“\u2026”:字符映射到未定义

在工作中,我没有收到错误,但我有python 3.3,你觉得有什么不同吗?

-----编辑

@MarkRamson 的评论回答了我的问题

【问题讨论】:

您能提供发生 UnicodeEncodeError 的行吗?你是怎么写这些推文的?你用 UTF-8 编码了吗? 今晚我会看,但我从 twitter API 收到了推文,并检查了文件的编码是 UTF-8 问题是您正在运行的控制台无法处理您要打印的字符: 请参阅***.com/questions/3597480/… 以获得一些提示。 就是这样!非常感谢 【参考方案1】:

您应该在打开文件时指定编码:

tweets_file = open(tweets_data_path, "r", encoding="utf-8-sig")

【讨论】:

utf-8-sig 是有根据的猜测吗? ;) 那你应该为它争辩。 @Jan-PhilipGehrcke:U+2026 是在推文中有意义的省略号字符。此外,UTF-8 是任何 Twitter API 最可能使用的编码。所以是的,我会说这是一个有根据的猜测......( -sig 部分只是一种预防措施 - 如果有 BOM,它会处理它,如果没有,则不会造成伤害)。 好吧,相信了一半。并且对于其他读者来说很明显:数据来自随机文件 twitter_data.txt,因此我们实际上无法可靠地知道其中的数据是如何编码的。 我猜问题出在print 行而不是open @georg:很可能,是的。 print(tweet.encode("ascii", errors="ignore").decode("ascii")) 可能会有所帮助...(而不是“ascii”,您应该使用终端的编码)。

以上是关于python:unicodeEncodeError:“charpmap”编解码器无法编码字符“\u2026”的主要内容,如果未能解决你的问题,请参考以下文章

python -- 解决UnicodeEncodeError问题

Python请求:UnicodeEncodeError:'charmap'编解码器无法编码字符

Python通过'Git Bash'打印Unicode字符串得到'UnicodeEncodeError'

python—— 写入错误UnicodeEncodeError的解决办法

python3 UnicodeEncodeError错误,cx_oracle模块执行sql报错:UnicodeEncodeError: 'ascii' codec can't

BeautifulSoup 3.1.0.1 和 Python 2.5.2 的 UnicodeEncodeError