convert()
是一个系统函数,用于转换 bytea
字符串在不同编码之间的文本。
convert()
添加于 PostgreSQL 7.2。
用法
convert (bytes
bytea
,src_encoding
name
,dest_encoding
name
) → 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 文档: 文本/二进制字符串转换函数