`
jssay
  • 浏览: 27131 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Perl中的URL编码和解码

阅读更多
今天我在项目上遇到一个问题,我要用写一个shell script去拷贝pdf文件,因为项目的需要,我要在原来文件名的后面加上一个子标题,然后问题出现在这个子标题上,因为我们知道文件名中是不可以有 \ / : * ? " < > 这些符号的.而我们的子标题中恰好有这些特殊字符.
如何过滤掉这些特殊字符呢?有一个办法就是利用URL编码的原理,将特殊字符转换成百分号的形式就可以了.

我们知道在java中,我们可以通过java.net.URLEncoder.encode()给一个URL编码,然后通过java.net.URLDecode.decode()解码.在javascript中也有类似功能的方法,escape()用于编码,unescape()用于解码.在shell中是没有这么强大的内置函数了,
相比之下用Perl来实现要简单的多,我可以在shell中调用perl的方法来实现encode的功能,代码如下:

<code>

#!/opt/perl-5.6.1/bin/perl
# -------------------------------------
# Encode url
# Jssay Jiang
# -------------------------------------

use strict;

my ($url) = @ARGV;

$url =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;

print "$url";

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

#print "$url";

exit 0;

</code>

PS:注释部分为解码方法.

Refer to http://www.jssay.com/blog/index.php/2009/10/20/perl%e7%9a%84url%e7%bc%96%e7%a0%81%e5%92%8c%e8%a7%a3%e7%a0%81/
0
0
分享到:
评论

相关推荐

    Base62 Encode/Decode Utility:用于对base62进行编码/解码的工具-开源

    chewingum软件包包含两个主要程序:-base62-chew它们已在perl中实现。 Base62也已经用c ++编码。 嚼被写成缩短长的十进制整数到base62字符串。 这不是单纯的基本转换,因为它在逻辑内部不使用算术运算。 这样,它...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    通过本书和示例中所用的免费工具,你可以将安全因素加入到你的测试套装中,从而得以睡个安稳觉。 作者简介  Paco Hope,是Cigital公司的一名技术经理,《Mastering FreeBsD and 0penBsDsecurity》 (由O’Reilly...

    WEB安全测试

    2.6 在Linux, Unix或OS X上安装Perl和使用CPAN 34 2.7 安装CAL9000 35 2.8 安装ViewState Decoder 36 2.9 安装cURL 36 2.10 安装Pornzilla 37 2.11 安装Cygwin 38 2.12 安装Nikto 2 39 2.13 安装Burp Suite 40 2.14...

    Jakarta commons docs API CHM 格式

    commons-codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder. commons-collections 扩充了 java.util.collection 接口 commons-compress 操作压缩文件的 API commons-...

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

    commons-codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder. commons-collections 扩充了 java.util.collection 接口 commons-compress 操作压缩文件的 API commons-...

    PHP3程序设计

    12.8 URL编码和解码 194 12.8.1 使用rawurlencode函数 194 12.8.2 自动解码 194 12.9 安全性 195 12.10 cookie 195 12.10.1 cookie安全性 196 12.10.2 如何设置和读取cookie 196 12.10.3 客户端浏览器支持cookie吗 ...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的...再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的...再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

    freemarker总结

    options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true. ...

Global site tag (gtag.js) - Google Analytics