zoukankan      html  css  js  c++  java
  • 一个shell写的urldecode代码

    转自:http://aaronw.me/static/779.html

    这是第一种方法:(标点符号会漏掉)

    #!/bin/sh
    awk ‘
    BEGIN {
    hextab=”0123456789ABCDEF”
    for ( i=1; i<=255; ++i ) ord [i] = sprintf(“%c”,i);
    }
    {
    decoded = “”
    for ( i=1; i<=length ($0); ++i ) {
    c = substr ($0, i, 1)
    if ( c ~ /[a-zA-Z0-9.-]/ ) {
    decoded = decoded c             # safe character
    } else if ( c == ” ” ) {
    decoded = decoded “+”   # special handling
    } else if ( c == “%” ) {
    hi= substr($0,i+1,1);
    low=substr($0,i+2,1);
    i++;i++
    decoded = decoded ord[(index(hextab,hi)-1)*16+index(hextab,low)-1]
    }
    }
    }
    END {print decoded}

    这是第二种方法:

    #/bin/sh
    awk ‘BEGIN {
    for(i=0;i<10;i++)
    hex[i]=i;
    hex["A"]=hex["a"]=10;
    hex["B"]=hex["b"]=11;
    hex["C"]=hex["c"]=12;
    hex["D"]=hex["d"]=13;
    hex["E"]=hex["e"]=14;
    hex["F"]=hex["f"]=15;
    }
    {
    gsub(/\+/,” “);
    i=$0;
    while(match(i,/%../)){
    if(RSTART>1);
    printf”%s”,substr(i,1,RSTART-1);
    printf”%c”,hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];
    i=substr(i,RSTART+RLENGTH);
    }
    print i;
    }’
  • 相关阅读:
    前端js(一)
    前端CSS
    前端HTML
    视图等
    Navicat使用
    查询语句
    SpringBoot不能直接访问templates下的静态资源
    Mybatis什么时候用${}
    thymeleaf使用restul风格URL
    SpringBoot使用PageHelper
  • 原文地址:https://www.cnblogs.com/xd502djj/p/2949632.html
Copyright © 2011-2022 走看看