我正在尝试分析 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 文档中的 sectionencode(data bytea, 'escape') 函数:

关于postgresql - 将 Bytea 转换为 Json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56188275/

10-13 04:52