    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      https://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017
    018package org.apache.commons.lang3;
    019
    020import java.nio.charset.Charset;
    021import java.nio.charset.IllegalCharsetNameException;
    022import java.nio.charset.StandardCharsets;
    023
    024/**
    025 * Character encoding names required of every implementation of the Java platform.
    026 *
    027 * <p>According to <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html">JRE character
    028 * encoding names</a>:</p>
    029 *
    030 * <p><cite>Every implementation of the Java platform is required to support the following character encodings.
    031 * Consult the release documentation for your implementation to see if any other encodings are supported.
    032 * </cite></p>
    033 *
    034 * @see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">JRE character encoding names</a>
    035 * @since 2.1
    036 * @deprecated Java 7 introduced {@link java.nio.charset.StandardCharsets}, which defines these constants as
    037 * {@link Charset} objects. Use {@link Charset#name()} to get the string values provided in this class.
    038 * This class will be removed in a future release.
    039 */
    040@Deprecated
    041public class CharEncoding {
    042
    043    /**
    044     * ISO Latin Alphabet #1, also known as ISO-LATIN-1.
    045     *
    046     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    047     */
    048    public static final String ISO_8859_1 = StandardCharsets.ISO_8859_1.name();
    049
    050    /**
    051     * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block
    052     * of the Unicode character set.
    053     *
    054     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    055     */
    056    public static final String US_ASCII = StandardCharsets.US_ASCII.name();
    057
    058    /**
    059     * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial
    060     * byte-order mark (either order accepted on input, big-endian used on output).
    061     *
    062     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    063     */
    064    public static final String UTF_16 = StandardCharsets.UTF_16.name();
    065
    066    /**
    067     * Sixteen-bit Unicode Transformation Format, big-endian byte order.
    068     *
    069     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    070     */
    071    public static final String UTF_16BE = StandardCharsets.UTF_16BE.name();
    072
    073    /**
    074     * Sixteen-bit Unicode Transformation Format, little-endian byte order.
    075     *
    076     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    077     */
    078    public static final String UTF_16LE = StandardCharsets.UTF_16LE.name();
    079
    080    /**
    081     * Eight-bit Unicode Transformation Format.
    082     *
    083     * <p>Every implementation of the Java platform is required to support this character encoding.</p>
    084     */
    085    public static final String UTF_8 = StandardCharsets.UTF_8.name();
    086
    087    /**
    088     * Tests whether the named charset is supported.
    089     *
    090     * <p>This is similar to <a
    091     * href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#isSupported%28java.lang.String%29">
    092     * java.nio.charset.Charset.isSupported(String)</a> but handles more formats</p>
    093     *
    094     * @param name  the name of the requested charset; may be either a canonical name or an alias, null returns false
    095     * @return {@code true} if the charset is available in the current Java virtual machine
    096     * @deprecated Please use {@link Charset#isSupported(String)} instead, although be aware that {@code null}
    097     * values are not accepted by that method and an {@link IllegalCharsetNameException} may be thrown.
    098     */
    099    @Deprecated
    100    public static boolean isSupported(final String name) {
    101        if (name == null) {
    102            return false;
    103        }
    104        try {
    105            return Charset.isSupported(name);
    106        } catch (final IllegalCharsetNameException ex) {
    107            return false;
    108        }
    109    }
    110
    111    /**
    112     * Constructs a new instance.
    113     *
    114     * @deprecated Will be removed in 4.0.0.
    115     */
    116    @Deprecated
    117    public CharEncoding() {
    118        // empty
    119    }
    120}