对于我的生活,我无法解决这个问题:我只是试图从.json文件中提取消息和谁说出来。虽然我不能在这里透露这些数据,但这就是它的作用:
print '<%s> %s' % (x['sender_id'], x['content'][0]['text'])
“x”是包含我需要知道的事物的词典。每行的输出如下所示:
<username> The quick brown fox jumps over the lazy dog.
如许多IRC日志中所见。无论如何,元组中的两个字符串都有Unicode。也就是说它们正式是Python unicode类型。我检查了。但是当我尝试将它们格式化为该字符串时,结果总是如下:
UnicodeEncodeError: 'ascii' codec can't encode character u'\U0001f52b' in position 26: ordinal not in range(128)
我尝试了很多东西,比如写这个:
print u'<%s> %s' % (x['sender_id'], x['content'][0]['text'])
或者:
print '<%s> %s' % (x['sender_id'], x['content'][0]['text']).encode('utf-8')
我尝试将这两种策略结合起来,除此之外还有其他的东西,但是没有我尝试了它。我做错了什么?
答案 0 :(得分:1)
可能print
使用ASCII编码写入stdout
,导致问题。检查sys.stdout.encoding
的值以确定。要么确保只打印ASCII字符串,要么使用PYTHONIOENCODING
env变量将默认的stdout编码设置为更合理的UTF-8。例如:
$ PYTHONIOENCODING=utf-8 python myprogram.py