使用带有 psycopg3 的 Python 3.9,存储在 Postgres 数据库中的混搭表情符号不会作为单个表情符号返回。例如 ‍ 返回 \u200d

Mashed-up emojis stored in a Postgres database not returned as single emoji using Python 3.9 with psycopg3. For example ‍ returned \u200d

我正在阅读包含来自 Postgres 13 数据库的表情符号的文本。结果是我的 Python/psycopg 查询没有 decode/return 我期望的文本。

通过 Postgres psql 客户端

结果符合预期!

️‍ and ‍‍⚕️

通过 Python 3.9 和 psycopg3 适配器

结果未正确重新调整 - 合并失败

>>> cur = conn.cursor()
>>> profiles = cur.fetchone()
>>> profiles[0]

️\u200d and \u200d\u200d⚕️

连接对象说它正在使用 utf-8

>>> conn.info.encoding
'utf-8'

我在这里错过了什么?

知道我应该寻找什么吗?

非常感谢您提前的想法,非常感谢! 欧盟

表情符号由多个字符组成,您使用的shell不知道如何以您想要的方式显示它们。

JosefZ 发布了 link 以获取更多详细信息:https://emojipedia.org/emoji-sequence/

我已经通过原始字节分析了字符串(在评论中提供)。 profiles[0] 变量保存有效字符串。问题仅在于字符串的显示方式,不支持更高级的表情符号(使用 ZWJ \u200d)。

要获得预览,您可以将内容转储到文本文件并在网络浏览器中打开。