如何取消转义多字节字符UTF-8

3

我想要对"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。有人能帮我吗?


2
现在已经修复了,请再试一次。 - lhf
它现在确实也在演示站点上运行。你是为那个网站工作的吗?现在它已经修复了吗? - Ivo
1
@IvoBeckers - lhf这张照片中右边的那个人。 - Egor Skriptunoff
1个回答

2

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

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


1
在线Lua解释器很好,但网页上显示了“charset=iso-8859-1”。现在已经改为“charset=utf-8”。 - lhf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接