- 论坛徽章:
- 0
|
送给楼主一个我自己写的 awk 转换 WEB编码的处理,使用比其他工具灵活。
echo "我的家在_19号4楼" |awk -F "" 'BEGIN{split("35,36,37,38,43,63,64",ExcStr,",");for(i in ExcStr)ExcString[sprintf("%c",ExcStr[i])]=1; for (i=0;i<=255;i++) a[sprintf("%c",i)]=i ;}{for(ii=1;ii<=NF;ii++){if(a[$ii]>=33 && a[$ii]<=126 && ExcString[$ii]!=1){printf "%c",a[$ii]}else{printf "%%%X",a[$ii]};}}'
结果: %E6%88%91%E7%9A%84%E5%AE%B6%E5%9C%A8_19%E5%8F%B74%E6%A5%BC
注意:如果你的环境语言是 UTF-8 ,那么你要在开始之前加
export LANG=""
一个UTF8中等于3个字符,如果你的环境是 LANG="en_HK.UTF-8" ,那么一个中文当成一个字符处理。
split("35,36,37,38,43,63,64",ExcStr,",") 这个是排除编码,我随便写几个进去,比如说 反斜杠 \ ,他的 编码是 5c ,十进制就是 92,那么要 把\ 转成 %5C ,就把 92 写到排除列表中 就会自动转换。
当然你也改编我的思维,把排除效果做成 直接填写明文字符
|
|