URL Encoder in Java URLEncoder is the utility class for HTML form encoding is part of JDK API. This class contains static methods for converting a String to the application/x-www-form-urlencoded MIME format. Custom encoders can also be built using simple String replacement techniques, however we used use this when the built-in encode does not serve our needs.   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 " " is converted into a plus sign "+".
  •  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.
For example using UTF-8 as the encoding scheme the string "The string ü@foo-bar" would get converted to "The+string+%C3%BC%40foo-bar" because in UTF-8 the character ü is encoded as two bytes C3 (hex) and BC (hex), and the character @ is encoded as one byte 40 (hex).
package com.livrona.snippets.url;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

 * A simple snippet showing how to encode a url using URLEncoder class from the
 * java.net package.
 * @author java4learners
public class URLEncoderExample {

	public static void main(String args[]) {

		String urlBase = "http://www.java4learners.com/api";
		String queryStringToEncode = "name=Jack Russel&age=32&prefs=a,b,c&grade=+1";
		String unencodedUrl = urlBase + "?" + queryStringToEncode;
		System.out.println("Url to to encode : " + unencodedUrl);
		try {
			String encodedQueryString = URLEncoder.encode(queryStringToEncode,
			String encodedUrl = urlBase + "?" + encodedQueryString;
			System.out.println("Final Encoded Url : " + encodedUrl);
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(
					"UTF-8 encoding is not suppport by the JDK!");

  The following output is generated. Url to to encode : http://www.java4learners.com/api?name=Jack Russel&age=32&prefs=a,b,c&grade=+1 Final Encoded Url : http://www.java4learners.com/api?name%3DJack+Russel%26age%3D32%26prefs%3Da%2Cb%2Cc%26grade%3D%2B1