如何反转义多字节字符 utf8

我想对"Sch%C3%B6ne"进行反转义。我在网上找到了一个unescape函数,它可以在许多情况下正常工作,但不能对这种情况进行处理,因为一个字符已经被编码成两个,我在http://www.lua.org/cgi-bin/demo上测试了以下代码

teststring = "Sch%C3%B6ne"

function unescape (str)
        str = string.gsub (str, "+", " ")
        str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
        str = string.gsub (str, "\r\n", "\n")
        return str
end

print(unescape(teststring))

它打印出Schöne,但我想要的是Schöne。有人能帮帮我吗?

点赞
用户1009479
用户1009479

这个方法运行良好,只是在线 Lua 解释器在这个 UTF8 示例中没有显示正确的结果。

你可以在另一个解释器下测试它,例如, 这个

2014-02-03 15:00:23