lua 实现 URL编码

关于URL编码的介绍

https://zh.wikipedia.org/wiki/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81

URL编码也叫做百分号编码

关于Lua中的模式的介绍

lua-users wiki: Patterns Tutorial

Lua 5.3 Reference Manual

capture 介绍 Programming in Lua : 20.3

用lua实现url编码

对于一个正常比如未经编码的url地址

1.需要把中文转化成%16进制

2.空格变成+

function LuaUtils.EncodeURL(s)
    s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)

    # 空格变成+
    return string.gsub(s, " ", "+")
end

ret = string.gsub( s, pattern, rep1[, n] );

当参数n省略,源对象包含的所有模式串都转换成替换串

上面的例子种就是省略了n

然后rep1用的是函数

1.string.gsub(第一个参数是源字符串;第二个参数是匹配模式,即去找符合的模式的字串;第三个参数是替换的字串,这里用的是自定义函数,也就是先对找到的符合模式的字串进行一个处理,再进行替换。

2.匹配模式:"([^%w%.%- ])"————人话:不是字母数字-.空格 

%w 代表英文字母和数字 represents all alphanumeric characters.

%.  代表 . 这个符号

%- 代表 - 这个符号

最后还有一个空格

[] 表示里面是一组模式多个模式 

^ 在[]中表示代表否定列出来的一组模式

3.自定义函数:function(c) return string.format("%%%02X", string.byte(c)) end

对满足上述匹配的字符取其字节(utf8)码,转为16进制,并用两位表示

%%:表示%这个符号

%02X:表示以十六进制形式输出,不足两位,前面补0输出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ivy_0709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值