001    // Copyright 2006-2007 Regents of the University of California.  May be used 
002    // under the terms of the revised BSD license.  See LICENSING for details.
003    package org.joe_e.charset;
004    
005    import java.net.URLEncoder;
006    import java.net.URLDecoder;
007    import java.io.UnsupportedEncodingException;
008    
009    /**
010     * Class for converting strings to and from the 
011     * <code>application/x-www-form-urlencoded</code> MIME format used for HTML
012     * forms.  Uses the UTF-8 character encoding, as specified by W3C.  This class
013     * contains static methods for converting strings between human-readable text 
014     * form and its corresponding encoding.
015     */
016    public class URLEncoding {
017        private URLEncoding() {}
018        
019        /**
020         * URL encode a value.
021         * @param value The value to encode.
022         * @return The encoded URL segment.
023         */
024        static public String encode(final String value) {
025            try {
026                return URLEncoder.encode(value, "UTF-8");
027            } catch (UnsupportedEncodingException e) {
028                throw new AssertionError("UTF-8 encoding not supported"); // Should never happen
029            }
030        }
031    
032        /**
033         * URL decode a segment.
034         * @param segment   The segment to decode.
035         * @return The decoded value.
036         */
037        static public String decode(final String segment) {
038            try {
039                return URLDecoder.decode(segment, "UTF-8");
040            } catch (final UnsupportedEncodingException e) {
041                throw new AssertionError("UTF-8 encoding not supported"); // Should never happen
042            }
043        }
044    }