Chinaunix

标题: Shell 进行 URL编码 [打印本页]

作者: forgaoqiang    时间: 2013-08-14 13:54
标题: Shell 进行 URL编码
本帖最后由 forgaoqiang 于 2013-08-14 14:04 编辑

文件名称 urlencode.sh
  1. #!/bin/sh
  2. # 从环境变量中读取数据
  3. if test -z "$1"
  4.         then
  5.                 echo "Lack of Argument!!"
  6.                 return 1
  7. fi
  8. echo "$1" |
  9. LANG=C awk '
  10. function char2hex(char){
  11.         for(j=0;j<256;j++)
  12.         {
  13.                 tmp=sprintf("%c",j);
  14.                 if(tmp==char){
  15.                         return sprintf("%%%X",j);
  16.                 }
  17.         }
  18.         return char;
  19. }
  20. BEGIN{
  21.         FS="";
  22.    OFS="";
  23. }
  24. {
  25.         for(i=1;i<=NF;i++) $i=char2hex($i);
  26.         print;
  27. }
  28. '
复制代码
使用方法
./urlencode.sh "www.chinaunix.net/forum.php?mod=post&balabalba"
话说挺牛x的思想,使用awk继续两次 %X 这样UTF-8也能进行编码,中文内容也不在话下~~
作者: rdcwayx    时间: 2013-08-28 14:20
楼主看看这个。
http://www.gnu.org/software/gawk ... tml#Control-Letters
  1. %%
  2. Print a single ‘%’. This does not consume an argument and it ignores any modifiers.
复制代码

作者: forgaoqiang    时间: 2013-08-28 15:09
哦 当时 没有看官方文档 自己做了简单的测试 % %% 以为是做两次计算了

⊙﹏⊙b汗 感谢提醒~

rdcwayx 发表于 2013-08-28 14:20
楼主看看这个。
http://www.gnu.org/software/gawk ... .html#Control-Lette ...





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2