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 018 package org.apache.commons.lang; 019 020 import java.io.UnsupportedEncodingException; 021 022 /** 023 * <p> 024 * Character encoding names required of every implementation of the Java platform. 025 * </p> 026 * 027 * <p> 028 * According to <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 029 * encoding names</a>: 030 * <p> 031 * <cite>Every implementation of the Java platform is required to support the following character encodings. Consult the 032 * release documentation for your implementation to see if any other encodings are supported.</cite> 033 * </p> 034 * </p> 035 * 036 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character encoding 037 * names</a> 038 * @author Apache Software Foundation 039 * @since 2.1 040 * @version $Id: CharEncoding.java 437554 2006-08-28 06:21:41Z bayard $ 041 */ 042 public class CharEncoding { 043 044 /** 045 * <p> 046 * ISO Latin Alphabet #1, also known as ISO-LATIN-1. 047 * </p> 048 * <p> 049 * Every implementation of the Java platform is required to support this character encoding. 050 * </p> 051 * 052 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 053 * encoding names</a> 054 */ 055 public static final String ISO_8859_1 = "ISO-8859-1"; 056 057 /** 058 * <p> 059 * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. 060 * </p> 061 * <p> 062 * Every implementation of the Java platform is required to support this character encoding. 063 * </p> 064 * 065 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 066 * encoding names</a> 067 */ 068 public static final String US_ASCII = "US-ASCII"; 069 070 /** 071 * <p> 072 * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either 073 * order accepted on input, big-endian used on output). 074 * </p> 075 * <p> 076 * Every implementation of the Java platform is required to support this character encoding. 077 * </p> 078 * 079 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 080 * encoding names</a> 081 */ 082 public static final String UTF_16 = "UTF-16"; 083 084 /** 085 * <p> 086 * Sixteen-bit Unicode Transformation Format, big-endian byte order. 087 * </p> 088 * <p> 089 * Every implementation of the Java platform is required to support this character encoding. 090 * </p> 091 * 092 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 093 * encoding names</a> 094 */ 095 public static final String UTF_16BE = "UTF-16BE"; 096 097 /** 098 * <p> 099 * Sixteen-bit Unicode Transformation Format, little-endian byte order. 100 * </p> 101 * <p> 102 * Every implementation of the Java platform is required to support this character encoding. 103 * </p> 104 * 105 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 106 * encoding names</a> 107 */ 108 public static final String UTF_16LE = "UTF-16LE"; 109 110 /** 111 * <p> 112 * Eight-bit Unicode Transformation Format. 113 * </p> 114 * <p> 115 * Every implementation of the Java platform is required to support this character encoding. 116 * </p> 117 * 118 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 119 * encoding names</a> 120 */ 121 public static final String UTF_8 = "UTF-8"; 122 123 /** 124 * <p> 125 * Returns whether the named charset is supported. 126 * </p> 127 * <p> 128 * This is similar to <a 129 * href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html#isSupported(java.lang.String)"> 130 * java.nio.charset.Charset.isSupported(String)</a> 131 * </p> 132 * 133 * @param name 134 * the name of the requested charset; may be either a canonical name or an alias 135 * @return <code>true</code> if, and only if, support for the named charset is available in the current Java 136 * virtual machine 137 * 138 * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character 139 * encoding names</a> 140 */ 141 public static boolean isSupported(String name) { 142 if (name == null) { 143 return false; 144 } 145 try { 146 new String(ArrayUtils.EMPTY_BYTE_ARRAY, name); 147 } catch (UnsupportedEncodingException e) { 148 return false; 149 } 150 return true; 151 } 152 153 }