转自:http://blog.csdn.net/sunhuwh/article/details/41809909
URL中的字符只能是ASCII字符,但是ASCII字符比较少,而URL则常常包含ASCII字符集以外的字符,如非英语字符、汉字、特殊符号等等,所以要对URL进行转换。这个过程就叫做URL编码,或者叫URL转义,实质上就是将包含非ASCII字符的URL转换为有效的ASCII字符格式。
在进行URL编码时,每一个非ASCII字符都被替换为“%hh”格式,其中hh为两位十六进制数,它对应于该字符在ISO-8859-1字符集里的编码值。比如“中国”这两个汉字出现在URL,就要将他们转为“%D6%D0%B9%FA”,由于一个汉字需要两个字节,所以“中国”被替换成了四个ASCII字符。
public static void main(String[] args) throws UnsupportedEncodingException{ String s = "zhaoxiaofnag%40eims.com.cn "; s=URLDecoder.decode(s,"utf-8"); System.out.println(s); String china = "%31%32%36%2E%61%6D/hEeGv4"; china = URLDecoder.decode(china,"utf-8"); System.out.println(china); }
另附上ASCII字符与URL编码的对照表。 ASCII字符 URL编码 空格 %20 ! %21 " %22 # %23 $ %24 % %25 & %26 ‘ %27 ( %28 ) %29 * %2A + %2B , %2C - %2D . %2E / %2F 0 %30 1 %31 2 %32 3 %33 4 %34 5 %35 6 %36 7 %37 8 %38 9 %39 : %3A ; %3B < %3C = %3D > %3E ? %3F @ %40 A %41 B %42 C %43 D %44 E %45 F %46 G %47 H %48 I %49 J %4A K %4B L %4C M %4D N %4E O %4F P %50 Q %51 R %52 S %53 T %54 U %55 V %56 W %57 X %58 Y %59 Z %5A [ %5B \ %5C ] %5D ^ %5E _ %5F ` %60 a %61 b %62 c %63 d %64 e %65 f %66 g %67 h %68 i %69 j %6A k %6B l %6C m %6D n %6E o %6F p %70 q %71 r %72 s %73 t %74 u %75 v %76 w %77 x %78 y %79 z %7A { %7B | %7C } %7D ~ %7E %7F € %80 %81 ? %82 ? %83 ? %84 … %85 ? %86 ? %87 ? %88 ‰ %89 ? %8A ? %8B ? %8C %8D ? %8E %8F %90 ‘ %91 ’ %92 “ %93 ” %94 ? %95 – %96 — %97 ? %98 ? %99 ? %9A ? %9B ? %9C %9D ? %9E ? %9F %A0 ? %A1 ¢ %A2 £ %A3 %A4 ¥ %A5 | %A6 § %A7 ¨ %A8 ? %A9 a %AA ? %AB ? %AC ˉ %AD ? %AE ˉ %AF ° %B0 ± %B1 2 %B2 3 %B3 ′ %B4 μ %B5 ? %B6 · %B7 ? %B8 1 %B9 o %BA ? %BB ? %BC ? %BD ? %BE ? %BF à %C0 á %C1 ? %C2 ? %C3 ? %C4 ? %C5 ? %C6 ? %C7 è %C8 é %C9 ê %CA ? %CB ì %CC í %CD ? %CE ? %CF D %D0 ? %D1 ò %D2 ó %D3 ? %D4 ? %D5 ? %D6 %D7 ? %D8 ù %D9 ú %DA ? %DB ü %DC Y %DD T %DE ? %DF à %E0 á %E1 a %E2 ? %E3 ? %E4 ? %E5 ? %E6 ? %E7 è %E8 é %E9 ê %EA ? %EB ì %EC í %ED ? %EE ? %EF e %F0 ? %F1 ò %F2 ó %F3 ? %F4 ? %F5 ? %F6 ÷ %F7 ? %F8 ù %F9 ú %FA ? %FB ü %FC y %FD t %FE ? %FF