我在数据库中存储了一个bytea,我尝试通过encode函数将其转换为string,它工作正常:
select encode(blobvalue,'escape') from myTable ;
但是,以下操作失败:
select convert_from(blobvalue,'UTF8') from myTable ;
ERROR: invalid byte sequence for encoding "UTF8": 0xac
我的服务器编码是UTF8:
SHOW SERVER_ENCODING;
server_encoding
-----------------
UTF8
(1 row)
任何解释为什么编码是工作的,但转换_从没有?是不是编码中使用的编码与转义相同的服务器编码?
1条答案
按热度按时间qv7cva1a1#
encode()
只将ASCII字节转换为字符。其他所有内容都将是转义的八进制值:这里,字节0xAC不是ASCII字符,并且呈现为
\254
。另一方面,
convert_from()
将bytea
视为某种编码的字符串,如果发现字节不正确,则会失败:所以你必须弄清楚你的
bytea
值实际上是哪种编码。