带有UTF-16字符的Python 3数组

时间:2018-02-27 15:16:45

标签: python python-3.x utf-16

我使用emojis的unicode值创建了两个带有正负emojis的数组:

positive = [
u'\U0001F600',
u'\U0001F601',
u'\U0001F602',
u'\U0001F923',
u'\U0001F603',
u'\U0001F604',
u'\U0001F605',
u'\U0001F606',
u'\U0001F609',
u'\U0001F60A',
u'\U0001F60B',
u'\U0001F60E',
u'\U0001F60D',
u'\U0001F618',
u'\U0001F617',
u'\U0001F619',
u'\U0001F61A',
u'\U0000263A',
u'\U0001F642',
u'\U0001F917',
u'\U0001F60F',
u'\U0001F60C',
u'\U0001F61B',
u'\U0001F61C',
u'\U0001F61D',
u'\U0001F924',
u'\U0001F643',
u'\U0001F62C']

negative = [
u'\U0001F610',
u'\U0001F611',
u'\U0001F636',
u'\U0001F644',
u'\U0001F60F',
u'\U0001F623',
u'\U0001F625',
u'\U0001F62E',
u'\U0001F910',
u'\U0001F62F',
u'\U0001F62A',
u'\U0001F62B',
u'\U0001F634',
u'\U0001F612',
u'\U0001F613',
u'\U0001F614',
u'\U0001F615',
u'\U0001F641',
u'\U0001F616',
u'\U0001F61E',
u'\U0001F61F',
u'\U0001F624',
u'\U0001F622',
u'\U0001F62D',
u'\U0001F626',
u'\U0001F627',
u'\U0001F628',
u'\U0001F629',
u'\U0001F630',
u'\U0001F631',
u'\U0001F635',
u'\U0001F621',
u'\U0001F620',
u'\U0001F637',
u'\U0001F912',
u'\U0001F915',
u'\U0001F922',
u'\U0001F927']

但是当我打印正面[0]时,我会回到这个奇怪的角色而不是表情符号:

我正在使用Amazon Linux和使用python-3.4的EC2机器上工作。 相同的代码可以从我的Macbook中按预期工作。

3 个答案:

答案 0 :(得分:0)

问题不是Python问题。 Mac支持终端中可以打印这些unicode字符的字体。

您使用的情况不支持相同的字体。

如果有问题的设备支持这些unicode值,它们将正确打印。

我测试了一个标准的macOS SSH终端到Ubuntu,它和原生Mac一样。

答案 1 :(得分:0)

您好Daniel Haviv

尝试此操作:

print(positive[0].encode('utf-8'))

您可以在此处阅读更多内容Python 2.x’s Unicode Support

更新:之前的解决方案无效,请尝试以下方法:

import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)

print(positive[0])

我找到了来自Setting the correct encoding when piping stdout in Python

的解决方案

答案 2 :(得分:0)

问题是我在screen

下运行