如何将文字\ u序列转换为UTF-8?

时间:2012-04-11 18:17:42

标签: postgresql utf-8 unicode-escapes

我从外部源加载数据转储,一些字符串包含UTF8字符的\uXXXX序列,如下所示:

\u017D\u010F\u00E1r nad S\u00E1zavou

我可以在psql中使用E''常量检查内容,但找不到任何函数/运算符来返回正确的值。

我想问一下,如果可以将带有unicode转义的字符串转换为正常的UTF8 而不使用使用PL / pgSQL函数吗?

1 个答案:

答案 0 :(得分:2)

我认为没有内置的方法。我能想到的最简单的方法是你想避免的plpgsql函数:

CREATE OR REPLACE FUNCTION str_eval(text, OUT t text) AS
$func$
BEGIN
EXECUTE 'SELECT E''' || replace($1, '''', '''''') || ''''
USING $1
INTO t;
END
$func$ LANGUAGE plpgsql IMMUTABLE STRICT;

更新版本可以防范SQLi并且速度更快。