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 * http://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; 022 023/** 024 * <p>Character encoding names required of every implementation of the Java platform.</p> 025 * 026 * <p>According to <a href="http://docs.oracle.com/javase/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 027 * encoding names</a>:</p> 028 * 029 * <p><cite>Every implementation of the Java platform is required to support the following character encodings. 030 * Consult the release documentation for your implementation to see if any other encodings are supported. 031 * </cite></p> 032 * 033 * @see <a href="http://download.oracle.com/javase/1.3/docs/guide/intl/encoding.doc.html">JRE character encoding names</a> 034 * @since 2.1 035 * @version $Id: CharEncoding.java 1459653 2013-03-22 07:37:03Z bayard $ 036 */ 037public class CharEncoding { 038 039 /** 040 * <p>ISO Latin Alphabet #1, also known as ISO-LATIN-1.</p> 041 * 042 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 043 */ 044 public static final String ISO_8859_1 = "ISO-8859-1"; 045 046 /** 047 * <p>Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block 048 * of the Unicode character set.</p> 049 * 050 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 051 */ 052 public static final String US_ASCII = "US-ASCII"; 053 054 /** 055 * <p>Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial 056 * byte-order mark (either order accepted on input, big-endian used on output).</p> 057 * 058 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 059 */ 060 public static final String UTF_16 = "UTF-16"; 061 062 /** 063 * <p>Sixteen-bit Unicode Transformation Format, big-endian byte order.</p> 064 * 065 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 066 */ 067 public static final String UTF_16BE = "UTF-16BE"; 068 069 /** 070 * <p>Sixteen-bit Unicode Transformation Format, little-endian byte order.</p> 071 * 072 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 073 */ 074 public static final String UTF_16LE = "UTF-16LE"; 075 076 /** 077 * <p>Eight-bit Unicode Transformation Format.</p> 078 * 079 * <p>Every implementation of the Java platform is required to support this character encoding.</p> 080 */ 081 public static final String UTF_8 = "UTF-8"; 082 083 //----------------------------------------------------------------------- 084 /** 085 * <p>Returns whether the named charset is supported.</p> 086 * 087 * <p>This is similar to <a 088 * href="http://download.oracle.com/javase/1.4.2/docs/api/java/nio/charset/Charset.html#isSupported%28java.lang.String%29"> 089 * java.nio.charset.Charset.isSupported(String)</a> but handles more formats</p> 090 * 091 * @param name the name of the requested charset; may be either a canonical name or an alias, null returns false 092 * @return {@code true} if the charset is available in the current Java virtual machine 093 */ 094 public static boolean isSupported(final String name) { 095 if (name == null) { 096 return false; 097 } 098 try { 099 return Charset.isSupported(name); 100 } catch (final IllegalCharsetNameException ex) { 101 return false; 102 } 103 } 104 105}