以编程方式将长十六进制转换为Unicode字符(如表情符号)

jus*_*alf 0 python unicode

给定一个包含表情符号字符十六进制值的变量str(例如s = '1f602'),如何以编程方式将其作为UTF-8编码的表情符号字符打印到文件中?

这个问题不是以编程方式完成的,而是要求代码点本身包含在源代码中。

我知道这适用于Python 3

import codecs
s = '1f602'
with codecs.open('test.out', 'w', 'utf-8') as outfile:
    outfile.write('{}\n'.format(eval('u"{}{}"'.format(r'\U000', text))))
Run Code Online (Sandbox Code Playgroud)

在受支持的文本编辑器中打开文件后,该文件将显示一个表情符号字符。

如何在没有Python 2的情况下也能做到这一点eval

我以为unichr可以,但是只接受少于的unicode字符0x10000

bob*_*nce 5

您也可以通过UTF-32编码:

import struct

def fullchr(n):
    return struct.pack('<I', n).decode('utf-32le')

outfile.write(fullchr(0x1F602))   # int('1F602', 16)
Run Code Online (Sandbox Code Playgroud)

或从Python 3.3开始,不再存在狭窄构建的问题,因此您可以使用chr(0x1F602)