最近用iGetter从离线迅雷的服务器下载文件时, 发觉文件名会成为这样的东西:
%C0%EE%BD%A1.(%B8%BD%D4%F9MV).%B7%E7%B4%B5%C2%F3%C0%CB
这是encode过的url。
于是必须进行url decode。发觉竟然没有一个现成的command line tool能用。
网上的资源中, 英文版的一般不能处理这样的字符串, 因为它是用GBK编码再encode的。
于是自己用ruby简单地写了一下:
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'uri'
require 'iconv'
if ARGV.size <= 0
puts "Usage: ./urldecode url ..."
exit
end
ARGV.each do |a|
str=URI.decode("#{a}")
puts Iconv.conv("utf-8", "gbk",str)
end
注意国内资源一般是在win下用gbk编码的, 所以带来了很多不方便, 直接url decode得到的并不是utf8编码的字串。
因此必须用iconv转换一下。
使用方法为:
./urldecode "%C0%EE%BD%A1.(%B8%BD%D4%F9MV).%B7%E7%B4%B5%C2%F3%C0%CB"
得到正确的字串为:
李健.(附赠MV).风吹麦浪
参考文档:
No comments:
Post a Comment