我正在尝试分析 Postgresql 数据库中的数据,该数据库是 Json 文本但存储在 bytea 列中。某些行可以转换,但其他行则不能。投射编码的 bytea 时,文本中没有 CodePoints 的 Json 工作正常
select encode(myByteaColumn, 'escape')::json -> aJsonProperty as myProp from myTable
Run Code Online (Sandbox Code Playgroud)
但是对于某些行,这会失败,因为字符串中有一些编码的代码点,例如德语变音符号(Ä,Ö 等),像这样对 bytea 进行编码时Zuständigkeit会显示Zust\303\244ndigkeit像这样的德语单词
select encode(myByteaColumn, 'escape') from myTable
Run Code Online (Sandbox Code Playgroud)
数据库设置为 UTF-8。
convert_from() 对我有用:
SELECT convert_from(decode('Zuständigkeit', 'escape'),'UTF8')
SELECT convert_from(decode('{"Zuständigkeit":"ABC"}', 'escape'),'UTF8')::jsonb -> 'Zuständigkeit'
Run Code Online (Sandbox Code Playgroud)
作为旁注,您得到了\303\244,因为根据PostgreSQL 文档中的这一部分,该encode(data bytea, 'escape')函数:
将零字节和高位集字节转换为八进制序列 (
\nnn) 并将反斜杠加倍。
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |