Java String Encode encode(String value, String encoding)

Here you can find the source of encode(String value, String encoding)

Description

Encodes a String using the set of characters allowed in a URI.

License

Open Source License

Parameter

Parameter Description
value <code>String</code> to be translated.
encoding the Java alias for the character encoding to be used to convert non-ASCII characters into bytes (e.g. <code>"UTF8"</code>).

Return

the translated String.

Declaration

public static String encode(String value, String encoding) throws UnsupportedEncodingException 

Method Source Code

//package com.java2s;
/**/* w w  w.  j  a va  2  s.co m*/
 * Copyright (c) 2000-2018 Liferay, Inc. All rights reserved.
 *
 * 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.UnsupportedEncodingException;

public class Main {
    private static final boolean[] sValidChar = new boolean[128];
    private static final char[] sHexLookup = new char[16];

    /**
     * Encodes a String using the set of characters allowed in a URI.
     *
     * @param      value     <code>String</code> to be translated.
     * @param      encoding  the Java alias for the character encoding to be used to convert non-ASCII characters into
     *                       bytes (e.g. <code>"UTF8"</code>).
     *
     * @return     the translated <code>String</code>.
     *
     * @exception  UnsupportedEncodingException  if the given encoding is not a recognised character encoding.
     */
    public static String encode(String value, String encoding) throws UnsupportedEncodingException {

        // Create a buffer that is roughly 1.5 times bigger than the value to
        // account for possible expansion of the resulting encoded string
        int len = value.length();
        StringBuilder out = new StringBuilder(len * 3 / 2);

        for (int charIndex = 0; charIndex < len; charIndex++) {
            char aChar = value.charAt(charIndex);

            if ((aChar <= 127) && sValidChar[aChar]) {
                out.append(aChar);
            } else if (aChar == ' ') {
                out.append('+');
            } else {
                byte[] charBytes = String.valueOf(aChar).getBytes(encoding);

                // For each byte to encode this character, write a '%',
                // followed by a 2 digit uppercase hex representation of the
                // byte value
                for (byte element : charBytes) {
                    out.append('%');

                    // Convert into two Hex digits (and don't worry about the
                    // sign bit, unlike Integer.toHexString()
                    out.append(sHexLookup[(element & 0xF0) >> 4]);
                    out.append(sHexLookup[element & 0x0F]);
                }
            }
        }

        // The result string should be encodable in pure ASCII
        return out.toString();
    }
}

Related

  1. encode(String str, int start, int end, Writer writer)
  2. encode(String text, String charset)
  3. encode(String text, String encoding)
  4. encode(String text, String encoding)
  5. encode(String val, String encoding)
  6. encodeBase64(String str)
  7. encodeConvenience(String str)
  8. encodeDataPair(final StringBuilder buffer, final String key, final String value)
  9. encodeDoublePercent(String input)