Perl中的URL编码和解码

use strict; my ($url) = @ARGV;
$url =~ s/([^A-Za-z0-9])/sprintf("%%X", ord($1))/seg;
print "$url";

#$url =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
#print "$url";
exit 0;

Urlencode:对 \n 不转码
perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2X",ord($1))/eg'

UrlDecode:
perl -p -e 's/%(..)/pack("c", hex($1))/eg'

使用举例:
解码:
echo "����" | perl -p -e 's/%(..)/pack("c", hex($1))/eg'
perl -p -e 's/%(..)/pack("c", hex($1))/eg' file.encoded
编码:
echo "编码" | perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2X",ord($1))/eg'
perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2X",ord($1))/eg' file.decoded

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值