`
jssay
  • 浏览: 27631 次
  • 性别: 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字符串。 这不是单纯的基本转换,因为它在逻辑内部不使用算术运算。 这样,它...

    《Perl_CGI六天入门》

    3. URL编码与解码:在CGI编程中,如何处理URL编码的参数。 第五天:CGI高级主题 1. Cookie处理:学习如何使用Perl CGI来设置和读取Cookies。 2. Session管理:探讨如何实现用户会话管理,保持用户状态。 3. 错误...

    Perl CGI 轻松进阶(PDG)

    URL编码和解码,用于处理特殊字符;以及文件上传功能的实现,这在用户需要提交文件的场景中非常常见。另外,读者还将学习到如何使用模板系统来分离业务逻辑和显示逻辑,提高代码的可维护性。 Perl CGI的另一个重要...

    Perl 参考大全(第二版)(PDG)

    Perl CGI编程涉及到表单处理、cookie管理、URL编码解码等技巧,这些都是构建动态网站的关键技术。 接着,书中会引导读者开发应用程序。这包括模块的使用和编写,Perl的模块化设计使得代码重用和程序维护变得更加...

    Perl一行式程序详细教程

    包括文本大小写转换、修剪前后空白、ROT13字符映射、BASE64编码解码、URL转义、HTML编码解码等。 十二、选择输出、删除的行 包括输出特定行、连续行去重、输出匹配的前后若干行等。 Perl一行式程序是一个强大且...

    IIS CGI文件名错误解码漏洞入侵动画教程

    2. **路径解析错误**:当IIS尝试解码这个请求时,由于算法的缺陷,它可能错误地将文件路径解析到不受限制的目录,比如`%5C`(URL编码的反斜杠)可能被解析为实际的反斜杠。 3. **执行恶意代码**:一旦路径被解析...

    CGI技术全面接触(PDG)

    2. URL编码与解码:理解URL编码的重要性,如何在Perl中进行编码和解码操作。 3. 文件上传:掌握如何通过CGI处理文件上传,包括设置最大文件大小、处理多个文件等。 4. 安全性考虑:学习防止SQL注入、XSS攻击等安全...

    perl-URI-Escape-Any :(无描述)

    `URI::Escape::Any`模块是Perl中的一个库,它专门用于处理URI的编码和解码问题。 URI编码是将特殊字符转换为百分比编码的过程,这是为了确保URI可以在HTTP请求或其他网络协议中安全传输。通常,非字母数字字符会被...

    URI-Fast:Perl的快速URI解析器

    2. **URL编码与解码**:URI中可能存在非ASCII字符,这些字符需要按照特定规则进行编码。URI-Fast应能正确处理这些编码问题,确保符合RFC3986标准。 3. **查询参数处理**:URI中可能包含查询字符串,这些字符串由...

    最新PHP短网址生成系统源码短链接生成系统源码URL缩短器系统源码.txt

    1. **URL编码和解码**: - **编码**:将长网址通过一定的算法转换成短网址。 - **解码**:根据短网址获取其对应的原始长网址。 - **示例**:假设使用62进制编码,则数字`1234567890`可编码为`1L9e`。 2. **...

    LinuxCGI编程.pdf

    总结来说,文档内容围绕着Linux CGI编程的方方面面进行了介绍和示例展示,包括CGI的基本概念、HTML表单数据的处理、环境变量、标准输入输出、数据编码解码、C语言编程技巧、脚本调试以及数据的存储和读取等重要知识...

    hashids.pm:Hashids,移植到Perl

    3. **编码与解码**:`hashids` 对象提供了 `encode` 和 `decode` 方法。`encode` 方法接受一个或多个整数,返回它们的编码字符串。相反,`decode` 方法接受一个编码字符串,返回原始的整数数组。例如: ```perl my...

    高级PHP程序员必备知识

    - **URL编码/解码**:用于处理 URL 中特殊字符的编码方式。 **1.3 参考资料** - **看的书、网页**:推荐阅读《PHP 完全自学教程》等相关书籍,以及官方文档等在线资源。 **1.4 此知识点掌握比较好的同学** - 可以...

    cgi-util-2.2.1.rar_CGI linux_cgi

    7. **编码解码**:处理URL编码和解码,确保数据在传输过程中不被破坏。 8. **文件上传处理**:如果库支持,可能会有处理文件上传的函数,能够方便地接收和存储用户上传的文件。 9. **多语言支持**:对于国际化的...

    cgi 接收post的数据

    - `decode()`函数用于解码URL编码的字符串。 - `filterhtml()`函数用于过滤掉可能存在的HTML标签和特殊字符,提高安全性。 - `setvaluetoform()`函数用于将解析后的键值对存储到相应的表单变量中,以便后续使用。 #...

    友盟 Open API.pdf

    编程语言中的Ruby、Perl和cURL命令行工具被提及,以示例形式演示了如何进行Base64的编码与解码操作。 3. HTTP请求方式:通过友盟Open API发送数据可以使用多种HTTP请求方法。文件内容中提到了GET和POST两种方法。...

    Linux下小型WEB服务器boa的使用

    - 解码值:由于URL中的空格会使用`+`替换,特殊字符会使用`%XX`的形式编码(XX为该字符的ASCII码十六进制表示),因此需要对每个值进行解码处理,以便得到原始的字符串。 #### 四、示例代码分析 在boa的源代码...

    计算机软件-编程源码-CGI技术全面接触.zip

    3. **编码转换**:由于HTTP请求和响应可能包含不同编码的字符,CGI程序需要正确处理这些编码,如从URL编码解码,或者在不同字符集间转换。 4. **安全性**:由于CGI程序可以执行任意命令,因此需要防止恶意用户通过...

    ffmpeg及web源码.rar

    FFmpeg由一系列库组成,如libavcodec(编码/解码库)、libavformat(容器格式库)、libavfilter(滤镜库)和libavutil(通用工具库)。开发者可以通过这些库来处理音视频数据,实现编码、解码、转码、流媒体传输等...

Global site tag (gtag.js) - Google Analytics