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

问题描述 投票:0回答:3

我使用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中按预期工作。

python python-3.x utf-16
3个回答
0
投票

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

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

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

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


0
投票

问题是我在screen下运行


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找到了解决方案

© www.soinside.com 2019 - 2024. All rights reserved.