convert() 是一个系统函数,用于转换 bytea 字符串在不同编码之间的文本。
convert() 添加于 PostgreSQL 7.2。
用法
convert (bytesbytea,src_encodingname,dest_encodingname) → bytea
如果提供的编码不兼容,或者字符串包含源编码无效的字节序列,则会引发一个 ERROR 错误。
convert_from() 和 convert_to() 提供相同的功能,并且如果源或目标字符串的编码与当前数据库的编码匹配,则无需指定它们的编码。
变更历史
- PostgreSQL 7.2
- 添加(提交 ab9b6c45)
示例
在编码之间转换单个字符
postgres=# SELECT 'ä'::bytea, convert('ä'::bytea, 'UTF8', 'LATIN1');
bytea | convert
--------+---------
\xc3a4 | \xe4
(1 row)
尝试在不兼容的编码之间执行转换
postgres=# SELECT convert('ほげほげ'::bytea, 'UTF-8', 'LATIN1');
ERROR: character with byte sequence 0xe3 0x81 0xbb in encoding "UTF8" has no equivalent in encoding "LATIN1"
尝试执行转换,但提供的字符串包含源编码无效的字节序列
postgres=# SELECT convert(E'\\xDEADBEEF', 'UTF8', 'LATIN1'); ERROR: invalid byte sequence for encoding "UTF8": 0xbe
参考资料
- PostgreSQL 文档: 文本/二进制字符串转换函数
