한 오래 된 트릭이 목적을 위해 파서를 사용하고 있습니다 :
postgres=# select e'Telefon\u00ED kontakty';
?column?
-------------------
Telefoní kontakty
(1 row)
CREATE OR REPLACE FUNCTION public.unescape(text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE result text;
BEGIN
EXECUTE format('SELECT e''%s''', $1) INTO result;
RETURN result;
END;
$function$
효과가 있지만 SQL 인젝션 취약성이 있으므로 입력 텍스트를 먼저 살균해야합니다! 여기
덜 읽을 수 있지만, 안전 버전입니다 -하지만 당신은 수동으로 탈출 상징으로 하나 개의 문자 지정해야합니다 :
CREATE OR REPLACE FUNCTION public.unescape(text, text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE result text;
BEGIN
EXECUTE format('SELECT U&%s UESCAPE %s',
quote_literal(replace($1, '\u','^')),
quote_literal($2)) INTO result;
RETURN result;
END;
$function$
결과
또 다른 유용한 답변이 중복에
postgres=# select unescape('Odpov\u011Bdn\u00E1 osoba','^');
unescape
-----------------
Odpovědná osoba
(1 row)
: HTTP : /을 /stackoverflow.com/q/10111654/398670 및 이에 대한 자세한 설명이 있습니다. http://stackoverflow.com/q/23659685/398670 –