application/x-www-form-urlencoded Encoding in Java

This section provides a tutorial example on how to use Java URLEncoder class to perform application/x-www-form-urlencoded encoding and decoding.

Now let's see how we can do application/x-www-form-urlencoded encoding in Java language.

If you look at the java.net package, you will see two classes related to URL encoding:

java.net.URLEncoder - This class contains static methods for converting a String to the application/x-www-form-urlencoded MIME format. It offers this encoding method:

String encode(String s, "UTF-8")
   Translates a string into application/x-www-form-urlencoded format
   using "UTF-8" scheme.

java.net.URLDecoder - This class contains static methods for decoding a String from the application/x-www-form-urlencoded MIME format. It offers this decoding method:

String decode(String s, "UTF-8")
   Decodes an application/x-www-form-urlencoded string using using
   "UTF-8" scheme.

To test these classes, I wrote this tutorial example program:

/* WwwFormUrlencodedTest.java
 * Copyright (c) 2010 HerongYang.com. All Rights Reserved.
 */
import java.net.URLEncoder;
import java.net.URLDecoder;
class WwwFormUrlencodedTest {
   public static void main(String[] a) {
      if (a.length<1) {
         System.out.println("Usage:");
         System.out.println("java WwwFormUrlencodedTest 1");
         return;
      }
      String test = a[0];
      String theInput = null;
      String theExpected = null;
      if (test.equals("1")) {
         theInput = "\u548c\u8363, how a u?";
         theExpected = "%E5%92%8C%E8%8D%A3%2C+how+a+u%3F";
      } else {
         System.out.println("Usage:");
         System.out.println("java WwwFormUrlencodedTest 1");
         return;
      }
      try {
         String theEncoded = URLEncoder.encode(theInput, "utf-8");
         String theDecoded = URLDecoder.decode(theEncoded, "utf-8");
         System.out.println("Input   : "+theInput);
         System.out.println("Encoded : "+theEncoded);
         System.out.println("Expected: "+theExpected);
         System.out.println("Decoded : "+theDecoded);
      } catch (Exception e) {
         e.printStackTrace();
      }
      return;
   }
}

If you run this program in JDK 1.6, you should get:

Input   : ??, how a u?
Encoded : %E5%92%8C%E8%8D%A3%2C+how+a+u%3F
Expected: %E5%92%8C%E8%8D%A3%2C+how+a+u%3F
Decoded : ??, how a u?

The double-question-mark (??) is there because my Windows command line does not support Chinese characters.

Conclusion: Java URLEncoder and URLDecoder classes support application/x-www-form-urlencoded encoding and decoding.

Table of Contents

 About This Book

 Base64 Encoding

 Base64 Encoding and Decoding Tools

 Base64URL - URL Safe Base64 Encoding

 Base32 Encoding

URL Encoding, URI Encoding, or Percent Encoding

 What Is URL/URI Encoding?

 URL Encoding Variations

 URL Encoding on HTML Form Data - IE

 URL Encoding on HTML Form Data - Firefox

application/x-www-form-urlencoded Encoding in Java

 URI String and Components in Java

 URL Encoding Support in PHP

 UUEncode Encoding

 References

 Full Version in PDF/EPUB