Java.net.URLEncoder class in Java - GeeksforGeeks

16 Jun, 2017
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.
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-
u%40geeks+for+geeks
Methods :
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

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

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 :
// Java program to show encode() method of // URLEncoder classimport java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLEncoder;  public class UrlEncoder {    public static void main(String[] args) throws MalformedURLException,                                    UnsupportedEncodingException     {        // base URL        String baseurl = "https://www.geeksforgeeks.org/?q=";          // String to be encoded        String query = "u@geeks for geeks";          System.out.println("URL without encoding :");        URL url = new URL(baseurl + query);        System.out.println(url);          // encode() method        System.out.println("URL after encoding :");        url = new URL(baseurl + URLEncoder.encode(query, "UTF-8"));        System.out.println(url);    }  }
Output :
URL without encoding :
https://www.geeksforgeeks.org/?q=u@geeks for geeks
URL after encoding :
https://www.geeksforgeeks.org/?q=u%40geeks+for+geeks
References :Official Java DocumentationThis 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 contribute@geeksforgeeks.org. 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.
Java-Networking
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Functional Interfaces in Java
Stream In Java
Constructors in Java
Different ways of Reading a text file in Java
Exceptions in Java
Generics in Java
Comparator Interface in Java with Examples
Strings in Java
Difference between Abstract Class and Interface in Java
How to remove an element from ArrayList in Java?