如何用Bshell转换cgi传入的变量中的非ASCII字符(汉字)

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

问题没说清楚.你要把汉字转换成什么?

应该不是要转换,而是要正确显示吧?

我是想把cgi传入参数中的(例如:%E0%E0| 原本是汉字的)值,用shell or awk 转换成汉字显示出来!

用下面的awk脚本:

echo "adsfkjladsjf%E0%E0"|urldecode

将输出:

assfkjladsjf噜

urldecode如下:(偶改造的)#!/bin/ksh -x

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}

'

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航