Java.net.URLEncoder class in Java
This class is a utility class for HTML form encoding. Encoding makes the form of URL more reliable and secure. When the user request is triggered by a get method, the form parameters and their values are appended at the end of URL after a ‘?’ sign. The problem arises when special characters are used for their values. In general case, HTML handles the encoding part and automatically processes the special characters and convert them to special characters for smooth handling of all the operations. However it is not a good practice to rely solely on HTML features and thus java provides this class to explicitly encode the URLs.
Following rules are used when encoding a string:
- Alphanumeric characters and certain special characters such as ‘*‘, ‘_‘, ‘–‘ and ‘.‘ remains unchanged.
- Spaces are converted into ‘+‘ signs.
- All other characters are encoded by one or more bytes using the encoding scheme specified. They are converted in a three character string of the form %xy, where xy represents the hexadecimal representation of the encoding character. W3C recommends using “UTF-8” for encoding purposes.
For example, if we have the parameter value which contains special characters and spaces as
u@geeks for geeks
If the encoding used is UTF-8 which is most common used, the @ sign will be converted into %40 and spaces would be converted to + signs and our encoded string will look like-
- encode() : This is one and only method provided by this class. It as the name suggests returns an encoded string for the specified string. One method, which is now deprecated has only one parameter, the string to be encoded. It doesn’t let you specify the encoding to be used and uses the platform default encoding. Another version allows the specification of the encoding to be used, and thus is widely used.
Syntax :public static String encode(String s) - @Deprecated Parameters : s : String to be encoded
Syntax :public static String encode(String s, String enc) throws UnsupportedEncodingException Parameters : s : string to be encoded enc : encoding to be used Throws : UnsupportedEncodingException : If the specified encoding is not used
Java Implementation :
URL without encoding : https://www.geeksforgeeks.org/?q=u@geeks for geeks URL after encoding : https://www.geeksforgeeks.org/?q=u%40geeks+for+geeks
Official Java Documentation
This article is contributed by Rishabh Mahrsee. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.