我正在尝试分析 Postgresql 数据库中的数据,该数据库是 Json 文本但存储在 bytea 列中。某些行可以转换,但其他行则不能。转换编码的 bytea 时,文本中没有 CodePoints 的 Json 工作正常
select encode(myByteaColumn, 'escape')::json -> aJsonProperty as myProp from myTable
但是对于某些行,这会失败,因为字符串中有一些编码的代码点,例如德语变音符号(Ä,Ö 等),
像这样编码 bytea 时,像
Zuständigkeit
这样的德语单词显示为 Zust\303\244ndigkeit
select encode(myByteaColumn, 'escape') from myTable
数据库设置为 UTF-8。
最佳答案
demo: db<>fiddle
convert_from()
对我有用:
SELECT convert_from(decode('Zuständigkeit', 'escape'),'UTF8')
SELECT convert_from(decode('{"Zuständigkeit":"ABC"}', 'escape'),'UTF8')::jsonb -> 'Zuständigkeit'
附带说明一下,您得到了 \303\244
,因为根据 PostgreSQL 文档中的 section , encode(data bytea, 'escape')
函数:关于postgresql - 将 Bytea 转换为 Json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56188275/