local char = string.char
local function convert(n, k)
local u, r=''
for i=1,k do
n,r = math.floor(n/0x40), n%0x40
u = char(r+0x80) .. u
end
return u, n
end
local function utu(a)
local n, r, u = tonumber(a,16)
if n<0x80 then
return char(n)
elseif n<0x800 then
u, n = convert(n, 1)
return char(n+0xc0) .. u
elseif n<0x10000 then
u, n = convert(n, 2)
return char(n+0xe0) .. u
elseif n<0x200000 then
u, n = convert(n, 3)
return char(n+0xf0) .. u
elseif n<0x4000000 then
u, n = convert(n, 4)
return char(n+0xf8) .. u
else
u, n = convert(n, 5)
return char(n+0xfc) .. u
end
end
str="%u6D4E%u5357%u69D0%u836B%u533A%u7ECF%u5341%u8DEF28293%u53F73%u53F7%u697C3-602"
ngx.say(string.gsub(str, '%%u(%w%w%w%w)', utu))