Implements the 'www-form-urlencoded' encoding scheme, also misleadingly known as URL encoding. : URLEncoder « Network Protocol « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Class
8. Collections Data Structure
9. Data Type
10. Database SQL JDBC
11. Design Pattern
12. Development Class
13. EJB3
14. Email
15. Event
16. File Input Output
17. Game
18. Generics
19. GWT
20. Hibernate
21. I18N
22. J2EE
23. J2ME
24. JDK 6
25. JNDI LDAP
26. JPA
27. JSP
28. JSTL
29. Language Basics
30. Network Protocol
31. PDF RTF
32. Reflection
33. Regular Expressions
34. Scripting
35. Security
36. Servlets
37. Spring
38. Swing Components
39. Swing JFC
40. SWT JFace Eclipse
41. Threads
42. Tiny Application
43. Velocity
44. Web Services SOA
45. XML
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java » Network Protocol » URLEncoderScreenshots 
Implements the 'www-form-urlencoded' encoding scheme, also misleadingly known as URL encoding.
    
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 
 *      http://www.apache.org/licenses/LICENSE-2.0
 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ 


import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.BitSet;


/**
 * <p>Implements the 'www-form-urlencoded' encoding scheme, 
 * also misleadingly known as URL encoding.</p>
 *  
 * <p>For more detailed information please refer to 
 * <a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1">
 * Chapter 17.13.4 'Form content types'</a> of the 
 * <a href="http://www.w3.org/TR/html4/">HTML 4.01 Specification<a></p>
 
 * <p> 
 * This codec is meant to be a replacement for standard Java classes
 {@link java.net.URLEncoder} and {@link java.net.URLDecoder} 
 * on older Java platforms, as these classes in Java versions below 
 * 1.4 rely on the platform's default charset encoding.
 * </p>
 
 @author Apache Software Foundation
 @since 1.2
 @version $Id: URLCodec.java,v 1.19 2004/03/29 07:59:00 ggregory Exp $
 */
public class URLCodec {
    
    /**
     * The default charset used for string decoding and encoding.
     */
    protected String charset = "UTF8";
    
    protected static byte ESCAPE_CHAR = '%';
    /**
     * BitSet of www-form-url safe characters.
     */
    protected static final BitSet WWW_FORM_URL = new BitSet(256);
    
    // Static initializer for www_form_url
    static {
        // alpha characters
        for (int i = 'a'; i <= 'z'; i++) {
            WWW_FORM_URL.set(i);
        }
        for (int i = 'A'; i <= 'Z'; i++) {
            WWW_FORM_URL.set(i);
        }
        // numeric characters
        for (int i = '0'; i <= '9'; i++) {
            WWW_FORM_URL.set(i);
        }
        // special chars
        WWW_FORM_URL.set('-');
        WWW_FORM_URL.set('_');
        WWW_FORM_URL.set('.');
        WWW_FORM_URL.set('*');
        // blank to be replaced with +
        WWW_FORM_URL.set(' ');
    }


    /**
     * Default constructor.
     */
    public URLCodec() {
        super();
    }

    /**
     * Constructor which allows for the selection of a default charset
     
     @param charset the default string charset to use.
     */
    public URLCodec(String charset) {
        super();
        this.charset = charset;
    }

    /**
     * Encodes an array of bytes into an array of URL safe 7-bit 
     * characters. Unsafe characters are escaped.
     *
     @param urlsafe bitset of characters deemed URL safe
     @param bytes array of bytes to convert to URL safe characters
     @return array of bytes containing URL safe characters
     */
    public static final byte[] encodeUrl(BitSet urlsafe, byte[] bytes
    {
        if (bytes == null) {
            return null;
        }
        if (urlsafe == null) {
            urlsafe = WWW_FORM_URL;
        }
        
        ByteArrayOutputStream buffer = new ByteArrayOutputStream()
        for (int i = 0; i < bytes.length; i++) {
            int b = bytes[i];
            if (b < 0) {
                b = 256 + b;
            }
            if (urlsafe.get(b)) {
                if (b == ' ') {
                    b = '+';
                }
                buffer.write(b);
            else {
                buffer.write('%');
                char hex1 = Character.toUpperCase(
                  Character.forDigit((b >> 40xF16));
                char hex2 = Character.toUpperCase(
                  Character.forDigit(b & 0xF16));
                buffer.write(hex1);
                buffer.write(hex2);
            }
        }
        return buffer.toByteArray()
    }


    /**
     * Decodes an array of URL safe 7-bit characters into an array of 
     * original bytes. Escaped characters are converted back to their 
     * original representation.
     *
     @param bytes array of URL safe characters
     @return array of original bytes 
     @throws DecoderException Thrown if URL decoding is unsuccessful
     */
    public static final byte[] decodeUrl(byte[] bytes
         throws Exception
    {
        if (bytes == null) {
            return null;
        }
        ByteArrayOutputStream buffer = new ByteArrayOutputStream()
        for (int i = 0; i < bytes.length; i++) {
            int b = bytes[i];
            if (b == '+') {
                buffer.write(' ');
            else if (b == '%') {
                try {
                    int u = Character.digit((char)bytes[++i]16);
                    int l = Character.digit((char)bytes[++i]16);
                    if (u == -|| l == -1) {
                        throw new RuntimeException("Invalid URL encoding");
                    }
                    buffer.write((char)((u << 4+ l));
                catch(ArrayIndexOutOfBoundsException e) {
                    throw new RuntimeException("Invalid URL encoding");
                }
            else {
                buffer.write(b);
            }
        }
        return buffer.toByteArray()
    }


    /**
     * Encodes an array of bytes into an array of URL safe 7-bit 
     * characters. Unsafe characters are escaped.
     *
     @param bytes array of bytes to convert to URL safe characters
     @return array of bytes containing URL safe characters
     */
    public byte[] encode(byte[] bytes) {
        return encodeUrl(WWW_FORM_URL, bytes);
    }


    /**
     * Decodes an array of URL safe 7-bit characters into an array of 
     * original bytes. Escaped characters are converted back to their 
     * original representation.
     *
     @param bytes array of URL safe characters
     @return array of original bytes 
     @throws DecoderException Thrown if URL decoding is unsuccessful
     */
    public byte[] decode(byte[] bytesthrows Exception {
        return decodeUrl(bytes);
    }


    /**
     * Encodes a string into its URL safe form using the specified
     * string charset. Unsafe characters are escaped.
     *
     @param pString string to convert to a URL safe form
     @param charset the charset for pString
     @return URL safe string
     @throws UnsupportedEncodingException Thrown if charset is not
     *                                      supported 
     */
    public String encode(String pString, String charset
        throws UnsupportedEncodingException  
    {
        if (pString == null) {
            return null;
        }
        return new String(encode(pString.getBytes(charset))"US-ASCII");
    }


    /**
     * Encodes a string into its URL safe form using the default string 
     * charset. Unsafe characters are escaped.
     *
     @param pString string to convert to a URL safe form
     @return URL safe string
     @throws EncoderException Thrown if URL encoding is unsuccessful
     
     @see #getDefaultCharset()
     */
    public String encode(String pStringthrows Exception {
        if (pString == null) {
            return null;
        }
        try {
            return encode(pString, getDefaultCharset());
        catch(UnsupportedEncodingException e) {
            throw new RuntimeException(e.getMessage());
        }
    }


    /**
     * Decodes a URL safe string into its original form using the 
     * specified encoding. Escaped characters are converted back 
     * to their original representation.
     *
     @param pString URL safe string to convert into its original form
     @param charset the original string charset
     @return original string 
     @throws DecoderException Thrown if URL decoding is unsuccessful
     @throws UnsupportedEncodingException Thrown if charset is not
     *                                      supported 
     */
    public String decode(String pString, String charset
        throws Exception, UnsupportedEncodingException 
    {
        if (pString == null) {
            return null;
        }
        return new String(decode(pString.getBytes("US-ASCII")), charset);
    }


    /**
     * Decodes a URL safe string into its original form using the default
     * string charset. Escaped characters are converted back to their 
     * original representation.
     *
     @param pString URL safe string to convert into its original form
     @return original string 
     @throws DecoderException Thrown if URL decoding is unsuccessful
     
     @see #getDefaultCharset()
     */
    public String decode(String pStringthrows Exception {
        if (pString == null) {
            return null;
        }
        try {
            return decode(pString, getDefaultCharset());
        catch(UnsupportedEncodingException e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    /**
     * Encodes an object into its URL safe form. Unsafe characters are 
     * escaped.
     *
     @param pObject string to convert to a URL safe form
     @return URL safe object
     @throws EncoderException Thrown if URL encoding is not 
     *                          applicable to objects of this type or
     *                          if encoding is unsuccessful
     */
    public Object encode(Object pObjectthrows Exception {
        if (pObject == null) {
            return null;
        else if (pObject instanceof byte[]) {
            return encode((byte[])pObject);
        else if (pObject instanceof String) {
            return encode((String)pObject);
        else {
            throw new RuntimeException("Objects of type " +
                pObject.getClass().getName() " cannot be URL encoded")
              
        }
    }

    /**
     * Decodes a URL safe object into its original form. Escaped 
     * characters are converted back to their original representation.
     *
     @param pObject URL safe object to convert into its original form
     @return original object 
     @throws DecoderException Thrown if URL decoding is not 
     *                          applicable to objects of this type
     *                          if decoding is unsuccessful
     */
    public Object decode(Object pObjectthrows Exception {
        if (pObject == null) {
            return null;
        else if (pObject instanceof byte[]) {
            return decode((byte[])pObject);
        else if (pObject instanceof String) {
            return decode((String)pObject);
        else {
            throw new RuntimeException("Objects of type " +
                pObject.getClass().getName() " cannot be URL decoded")
              
        }
    }



    /**
     * The default charset used for string decoding and encoding.
     *
     @return the default string charset.
     */
    public String getDefaultCharset() {
        return this.charset;
    }

}

   
    
    
    
  
Related examples in the same category
1. URL Encoder: similar to the java.net.URLEncoder class
2. Decoding and encoding URLs
3. Parse a x-www-form-urlencoded string
4. URL Encoder: Encode a string according to RFC 1738.
5. Encode a path as required by the URL specification
6. Calls java.net.URLEncoder.encode(String, String) via reflection, if we are running on JRE 1.4 or later, otherwise reverts to the deprecated URLEncoder.encode(String)method.
7. Provides a method to encode any string into a URL-safe form
8. Converts a String SJIS or JIS URL encoded hex encoding to a Unicode String
9. Request parsing and encoding utility methods
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.