【发布时间】:2020-08-15 02:28:49
【问题描述】:
我正在开发表情符号检测模块。对于某些表情符号,我观察到奇怪的行为,即在将它们转换为 utf-8 编码后,它们没有转换回其原始表示形式。我需要将它们的确切颜色表示作为 API 响应发送,而不是发送 unicode 转义字符串。有什么线索吗?
In [1]: x = "example1: ???? and example2: ???? and example3: ????"
In [2]: x.encode('utf8')
Out[2]: b'example1: \xf0\x9f\xa4\xad and example2: \xf0\x9f\x98\x81 and example3: \xf0\x9f\xa5\xba'
In [3]: x.encode('utf8').decode('utf8')
Out[3]: 'example1: \U0001f92d and example2: ???? and example3: \U0001f97a'
In [4]: print( x.encode('utf8').decode('utf8') )
*example1: ???? and example2: ???? and example3: ????*
更新 1: 通过这个例子,它必须更清楚地解释。在这里,当我发送 unicode 转义字符串时,会呈现两个表情符号,但第三个示例无法转换精确的表情符号,这种情况下该怎么办?
【问题讨论】:
-
x.encode('utf8').decode('utf8')==x是True。似乎是什么问题? -
@DYZ 我知道它们是一样的,但我想以表情符号的形式存储它,而不是 Unicode 转义序列。
-
字符串在两种情况下都包含相同的数据。您不是“存储 unicode 转义序列”,而是 显示字符串中单个正确代码点的 Unicode 转义序列。
标签: python-3.x unicode utf-8 python-unicode unicode-escapes