| zhuyifei1999 added a comment. |
In T184713#3893484, @Ottomata wrote:To fix on your side, you'd either: A. run in python3, where everything is utf-8 anyway, or B. change this line to say element = json.loads(event.data.decode('utf-8').
event.data in python 2 is an instance of unicode. unicode.decode(encoding) is (near-)equivalent to unicode.encode(sys.getdefaultencoding()).decode(encoding) which makes little sense and results in an error (since default encoding is ascii):
>>> import pwb, pywikibot >>> from pywikibot.comms.eventstreams import EventStreams >>> stream = EventStreams(stream='recentchange') >>> change = next(iter(stream)) WARNING: Empty message found. >>> event = next(stream.source) >>> event.data u'{"bot":false,"comment":"[\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u043e\u0442\u043f\u0430\u0442\u0440\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430]","id":null,"log_action":"approve","log_action_comment":"Stsents \u043e\u0442\u043f\u0430\u0442\u0440\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b [[\u041a\u0430\u043c\u0435\u043d\u0441\u043a\u0430\u044f (\u0441\u0442\u0430\u043d\u0446\u0438\u044f)]]: [\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u043e\u0442\u043f\u0430\u0442\u0440\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430]","log_id":56743614,"log_params":[90157284,86964853,"20180108211855"],"log_type":"review","meta":{"domain":"ru.wikipedia.org","dt":"2018-01-11T16:19:40+00:00","id":"399fa6f4-f6eb-11e7-97eb-90b11c278bf7","request_id":"06d9f8fb-ee3f-4ba2-80ee-30d249778fb8","schema_uri":"mediawiki/recentchange/1","topic":"eqiad.mediawiki.recentchange","uri":"https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BC%D0%B5%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_(%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F)","partition":0,"offset":646112725},"namespace":0,"parsedcomment":"[\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u043e\u0442\u043f\u0430\u0442\u0440\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430]","server_name":"ru.wikipedia.org","server_script_path":"/w","server_url":"https://ru.wikipedia.org","timestamp":1515687580,"title":"\u041a\u0430\u043c\u0435\u043d\u0441\u043a\u0430\u044f (\u0441\u0442\u0430\u043d\u0446\u0438\u044f)","type":"log","user":"Stsents","wiki":"ruwiki"}' >>> event.data.decode('utf-8') Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-33: ordinal not in range(128)
TASK DETAIL
EMAIL PREFERENCES
To: zhuyifei1999
Cc: zhuyifei1999, Ottomata, Aklapper, Xqt, pywikibot-bugs-list, Magul, Tbscho, rafidaslam, MayS, Mdupont, JJMC89, Avicennasis, JAllemandou, mobrovac, GWicke, jayvdb, Dalba, Masti, Alchimista, Rxy, jeremyb
Cc: zhuyifei1999, Ottomata, Aklapper, Xqt, pywikibot-bugs-list, Magul, Tbscho, rafidaslam, MayS, Mdupont, JJMC89, Avicennasis, JAllemandou, mobrovac, GWicke, jayvdb, Dalba, Masti, Alchimista, Rxy, jeremyb
_______________________________________________ pywikibot-bugs mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs
