您如何使用 gsub 函数删除 ¬ 字符?

我已经尝试使用 gsub 从 URL 中去除 ¬ 字符,因为它不应该存在,但是客户端的服务器已经添加了它。

有没有办法将其删除?我尝试了这个:

s = string.gsub(s, "¬", "")

但是这不起作用。有什么想法吗?

编辑:

这是整个代码块:

if link then
    function urlencode(s)
        s = string.gsub(s, "([{}&=+%c])",
            function(c)
                return string.format("%%%02X", string.byte(c))
            end
        )
        s = string.gsub(s, " ", "+")
        s = string.gsub(s, "¬", "")
        return s
    end

    print(urlencode(link))
    local url = urlencode(link)
    system.openURL(url)
end
点赞
用户2633423
用户2633423

也许这是一个编码不匹配的问题。

在 UTF-8 中,那个 ¬ 字符被编码为 \xC2\xAC( 十进制为 \194\172)。此外,Lua 的字符串库不知道代码点,它只处理字节,因此,"¬" Lua 字符串字面量在存储脚本的编码方式中可能被表示成不同形式(在我的 Windows 机器上,采用代码页 1252,它是一个简单的 \xAC)。因此,当 gsub 函数获取 URL 时,表示该字面量的字节序列可能无法与 URL 中的 \xAC\xC2 匹配。

尝试看看是否将以下行更改为:

s = string.gsub(s, "\194\172", "")

会有所区别。

注意: ¬ 符号在 Unicode 中被称为"not sign",也被称为**"angled dash"(Unicode 码点 U+00AC)。相应的 HTML 实体是 ¬¬。在数学中,它通常被用作"逻辑非"**操作符(数学家对应于 C ! 操作符或 Lua 的 not 操作符)。

2013-09-21 11:32:51