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 文档: 文本/二进制字符串转换函数