你如何使用gsub删除¬字符?

时间:2013-09-20 09:45:09

标签: string url encoding lua gsub

我尝试使用gsub从网址中删除¬字符,因为它不应该存在,但已由客户端的服务器添加。

有没有办法删除它?我试过这个:

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

1 个答案:

答案 0 :(得分:3)

也许它可能是编码不匹配。

UTF-8中的¬字符编码为\xC2\xAC(十进制为\194\172)。此外,Lua字符串库不是代码点感知的,它只处理字节,因此"¬" Lua字符串文字可以在存储脚本的编码中表示不同(在我的Windows机器上,代码页1252,这是一个简单的\xAC)。因此,当gsub函数被提供给URL时,表示文字的字节序列与URL中的\xAC\xC2不匹配。

尝试查看是否更改了该行:

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

为:

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

有所不同。

注意:¬符号在Unicode中称为"not sign",或者也称为“斜角划线”(Unicode代码点U + 00AC)。相应的HTML实体为¬¬。它通常在数学中用作“逻辑非”运算符(它等同于C !运算符或Lua not运算符的数学家)。