You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL是否有函数将非ASCII字符转换为Unicode转义序列?

PostgreSQL 转换非ASCII字符为Unicode转义序列的方法

PostgreSQL没有直接的内置函数实现该需求,但可以通过组合现有函数或自定义函数完成。

实现思路

利用unicode()获取字符的Unicode码点,通过to_hex()转为十六进制字符串,再补全前导零并拼接\u前缀,最终组合成Unicode转义序列。

自定义函数示例

创建一个通用函数,自动处理字符串中的所有非ASCII字符:

CREATE OR REPLACE FUNCTION unicode_escape(input_text text) RETURNS text AS $$
SELECT string_agg(
    CASE WHEN ascii(char) < 128 THEN char
         ELSE '\u' || lpad(to_hex(unicode(char)), 4, '0')
    END, ''
) FROM regexp_split_to_table($1, '') char;
$$ LANGUAGE sql IMMUTABLE;

测试使用

对波兰语字母ż进行转换:

SELECT unicode_escape('ż');

返回结果:\u017C

为什么encode和convert_from不适用

  • encode函数针对字节流处理,例如encode('ż'::bytea, 'escape')会返回\xC5\xBC,这是该字符UTF-8编码的字节转义,而非Unicode码点的转义序列。
  • convert_from用于不同字符编码间的转换,无法生成Unicode转义格式的字符串。

内容的提问来源于stack exchange,提问作者Konrad S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:24:57