1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.codec;
19
20 import java.nio.charset.Charset;
21 import java.nio.charset.StandardCharsets;
22
23 /**
24 * Character encoding names required of every implementation of the Java platform.
25 *
26 * From the Java documentation for {@link Charset}:
27 * <p>
28 * <cite>Every implementation of the Java platform is required to support the following character encodings. Consult the
29 * release documentation for your implementation to see if any other encodings are supported. Consult the release
30 * documentation for your implementation to see if any other encodings are supported.</cite>
31 * </p>
32 *
33 * <ul>
34 * <li>{@code US-ASCII}<p>
35 * Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set.</p></li>
36 * <li>{@code ISO-8859-1}<p>
37 * ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.</p></li>
38 * <li>{@code UTF-8}<p>
39 * Eight-bit Unicode Transformation Format.</p></li>
40 * <li>{@code UTF-16BE}<p>
41 * Sixteen-bit Unicode Transformation Format, big-endian byte order.</p></li>
42 * <li>{@code UTF-16LE}<p>
43 * Sixteen-bit Unicode Transformation Format, little-endian byte order.</p></li>
44 * <li>{@code UTF-16}<p>
45 * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either order
46 * accepted on input, big-endian used on output.)</p></li>
47 * </ul>
48 *
49 * This perhaps would best belong in the [lang] project. Even if a similar interface is defined in [lang], it is not
50 * foreseen that [codec] would be made to depend on [lang].
51 *
52 * <p>
53 * This class is immutable and thread-safe.
54 * </p>
55 *
56 * @see Charset
57 * @since 1.4
58 */
59 public class CharEncoding {
60
61 /**
62 * CharEncodingISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.
63 * <p>
64 * Every implementation of the Java platform is required to support this character encoding.
65 * </p>
66 *
67 * @see Charset
68 */
69 public static final String ISO_8859_1 = StandardCharsets.ISO_8859_1.name();
70
71 /**
72 * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set.
73 * <p>
74 * Every implementation of the Java platform is required to support this character encoding.
75 * </p>
76 *
77 * @see Charset
78 */
79 public static final String US_ASCII = StandardCharsets.US_ASCII.name();
80
81 /**
82 * Sixteen-bit Unicode Transformation Format, The byte order specified by a mandatory initial byte-order mark
83 * (either order accepted on input, big-endian used on output)
84 * <p>
85 * Every implementation of the Java platform is required to support this character encoding.
86 * </p>
87 *
88 * @see Charset
89 */
90 public static final String UTF_16 = StandardCharsets.UTF_16.name();
91
92 /**
93 * Sixteen-bit Unicode Transformation Format, big-endian byte order.
94 * <p>
95 * Every implementation of the Java platform is required to support this character encoding.
96 * </p>
97 *
98 * @see Charset
99 */
100 public static final String UTF_16BE = StandardCharsets.UTF_16BE.name();
101
102 /**
103 * Sixteen-bit Unicode Transformation Format, little-endian byte order.
104 * <p>
105 * Every implementation of the Java platform is required to support this character encoding.
106 * </p>
107 *
108 * @see Charset
109 */
110 public static final String UTF_16LE = StandardCharsets.UTF_16LE.name();
111
112 /**
113 * Eight-bit Unicode Transformation Format.
114 * <p>
115 * Every implementation of the Java platform is required to support this character encoding.
116 * </p>
117 *
118 * @see Charset
119 */
120 public static final String UTF_8 = StandardCharsets.UTF_8.name();
121
122 /**
123 * TODO Make private in 2.0.
124 *
125 * @deprecated TODO Make private in 2.0.
126 */
127 @Deprecated
128 public CharEncoding() {
129 // empty
130 }
131
132 }