Here is one example:
Without URL encoding (505 code)
GET /context/api.do?token=encrypted&p1=xxx&p2=xxx xx HTTP/1.1
With URL encoding (200 code)
GET /context/api.do?token=encrypted&p1=xxx&p2=xxx%20xx HTTP/1.1
In JDK, there is a URLEncoder utility class to provide methods for URL encode and decode.
http://download.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html
Note that because the <space> character is very commonly used, a special code ( the "+" sign) has been reserved as its URL encoding. Thus the string "A B" can be URL encoded as either "A%20B" or "A+B". Therefore in JDK, it was converted to plus sign (+).
Here are excerpts from SUN javadoc
--------------------------------------------------
When encoding a String, the following rules apply:
- The alphanumeric characters "
a
" through "z
", "A
" through "Z
" and "0
" through "9
" remain the same. - The special characters "
.
", "-
", "*
", and "_
" remain the same. - The space character "
+
". - All other characters are unsafe and are first converted into one or more bytes using some encoding scheme. Then each byte is represented by the 3-character string "
%xy
", where xy is the two-digit hexadecimal representation of the byte. The recommended encoding scheme to use is UTF-8. However, for compatibility reasons, if an encoding is not specified, then the default encoding of the platform is used.
No comments:
Post a Comment