先把资料列一下,
字符 URL编码值
space %20
" %22
# %23
% %25
& %26
( %28
) %29
+ %2B
, %2C
/ %2F
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %4o
\ %5C
| %7C
手头的程序,界面基于ajax,需要向服务器上的servlet发送XML,采用HTTP POST 方式,这种情况下POST比GET当然好得多,GET的URL编码更麻烦。即使如此,编码问题还是给我来了一个下马威。由于XML是用纯文本参数的方式发起请求,当XML内部某个节点值含有“+”的时候,Http传输就会丢失这个字符,这个时候必须将“+”手动转成 “%2B”,同时需要手动转的字符还有“&”->“%26”,“%”->“%25”等。这几个特殊字符是不能用javascript的encodeURI()来编码的,所以即使“笨”一点手动转那也是没办法。不过除了这三个顽固的家伙,尚未发现其它字符也需要在POST方式提交XML文本的情况下先作转换,硬编码看来也不是不可以哈。值得留意的是,“&”在XML里也是特殊字符,所以一般来说我不会对其进行uri编码,而是把它转换成“&”。
字符 URL编码值
space %20
" %22
# %23
% %25
& %26
( %28
) %29
+ %2B
, %2C
/ %2F
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %4o
\ %5C
| %7C
手头的程序,界面基于ajax,需要向服务器上的servlet发送XML,采用HTTP POST 方式,这种情况下POST比GET当然好得多,GET的URL编码更麻烦。即使如此,编码问题还是给我来了一个下马威。由于XML是用纯文本参数的方式发起请求,当XML内部某个节点值含有“+”的时候,Http传输就会丢失这个字符,这个时候必须将“+”手动转成 “%2B”,同时需要手动转的字符还有“&”->“%26”,“%”->“%25”等。这几个特殊字符是不能用javascript的encodeURI()来编码的,所以即使“笨”一点手动转那也是没办法。不过除了这三个顽固的家伙,尚未发现其它字符也需要在POST方式提交XML文本的情况下先作转换,硬编码看来也不是不可以哈。值得留意的是,“&”在XML里也是特殊字符,所以一般来说我不会对其进行uri编码,而是把它转换成“&”。