2015-08-27 35 views
2

我在使用tweepy并在屏幕(Windows)上打印tweet消息时出现此错误。'charmap'编解码器无法编码字符

#!/usr/bin/env python 

from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 
import json 

#consumer key, consumer secret, access token, access secret. 
ckey = 'xyz' 
csecret = 'xyz' 
atoken = 'xyz' 
asecret = 'xyz' 


class Listener(StreamListener): 

    def on_data(self, data): 
     print json.loads(data)['text'] 
     return True 

    def on_error(self, status): 
     print status 


auth = OAuthHandler(ckey, csecret) 
auth.set_access_token(atoken, asecret) 

twitterStream = Stream(auth, Listener()) 
twitterStream.filter(track=['#hash1', '#hash2'], languages=['en']) 
> Traceback (most recent call last): File 
> "C:....twitterSentiment.py", 
> line 34, in <module> 
>  twitterStream.filter(track=['#hash1', '#hash2'], languages=['en']) File 
> line 430, in filter 
>  self._start(async) File "C:......streaming.py", 
> line 346, in _start 
>  self._run() File "C:.....streaming.py", 
> line 286, in _run 
>  raise exception UnicodeEncodeError: 'charmap' codec can't encode characters in position 108-111: character maps to <undefined> 

它是由Windows不支持所有字符引起的。有没有解决方法?

+1

你可以在这里发布你的代码吗? pastebin –

+0

您需要粘贴错误引用的代码,错误只是告诉我们在哪里查找错误。 – PVNRT

回答

2

您会收到此错误消息,因为它无法打印部分tweet.text。将其编码为utf-8(unicode)。

def on_data(self, data): 
    print json.loads(data)['text'].encode('utf-8') 
    return True 
0
chcp 65001 

这是在多线程在规定溶液。我正在使用未打印的符号“∞”。我运行后从cmd运行python代码

chcp 65001 

它的工作方式就像一个魅力。希望能帮助到你。

p.s.它只能在cmd中工作,不能在原子编辑器中,也不能通过cygwin。

相关问题