FileDocCategorySizeDatePackage
Encodings.javaAPI DocApache Xerces 3.0.15189Fri Sep 14 20:33:54 BST 2007org.apache.xml.serialize

Encodings

public class Encodings extends Object
Provides information about encodings. Depends on the Java runtime to provides writers for the different encodings, but can be used to override encoding names and provide the last printable character for each encoding.
deprecated
This class was deprecated in Xerces 2.9.0. It is recommended that new applications use the DOM Level 3 LSSerializer or JAXP's Transformation API for XML (TrAX) for serializing XML. See the Xerces documentation for more information.
version
$Id: Encodings.java 476047 2006-11-17 04:27:45Z mrglavas $
author
Assaf Arkin

Fields Summary
static final int
DEFAULT_LAST_PRINTABLE
The last printable character for unknown encodings.
static final int
LAST_PRINTABLE_UNICODE
static final String[]
UNICODE_ENCODINGS
static final String
DEFAULT_ENCODING
static Hashtable
_encodings
static final String
JIS_DANGER_CHARS
Constructors Summary
Methods Summary
static EncodingInfogetEncodingInfo(java.lang.String encoding, boolean allowJavaNames)

param
encoding a MIME charset name, or null.


                 
            
        EncodingInfo eInfo = null;
        if (encoding == null) {
            if((eInfo = (EncodingInfo)_encodings.get(DEFAULT_ENCODING)) != null) 
                return eInfo;
            eInfo = new EncodingInfo(EncodingMap.getJava2IANAMapping(DEFAULT_ENCODING), DEFAULT_ENCODING, LAST_PRINTABLE_UNICODE);
            _encodings.put(DEFAULT_ENCODING, eInfo);
            return eInfo;
        }
        // need to convert it to upper case:
        encoding = encoding.toUpperCase(Locale.ENGLISH);
        String jName = EncodingMap.getIANA2JavaMapping(encoding);
        if (jName == null) {
            // see if the encoding passed in is a Java encoding name.
            if (allowJavaNames) {
                EncodingInfo.testJavaEncodingName(encoding);
                if ((eInfo = (EncodingInfo)_encodings.get(encoding)) != null) 
                    return eInfo;
                // is it known to be unicode-compliant?
                int i = 0;
                for(; i<UNICODE_ENCODINGS.length; i++) {
                    if(UNICODE_ENCODINGS[i].equalsIgnoreCase(encoding)) {
                        eInfo = new EncodingInfo(EncodingMap.getJava2IANAMapping(encoding), encoding, LAST_PRINTABLE_UNICODE);
                        break;
                    }
                }
                if(i == UNICODE_ENCODINGS.length) {
                    eInfo = new EncodingInfo(EncodingMap.getJava2IANAMapping(encoding), encoding, DEFAULT_LAST_PRINTABLE);
                }
                _encodings.put(encoding, eInfo); 
                return eInfo;
            }
            throw new UnsupportedEncodingException(encoding);
        }
        if ((eInfo = (EncodingInfo)_encodings.get(jName)) != null)
            return eInfo;
        // have to create one...
        // is it known to be unicode-compliant?
        int i=0;
        for(; i<UNICODE_ENCODINGS.length; i++) {
            if(UNICODE_ENCODINGS[i].equalsIgnoreCase(jName)) {
                eInfo = new EncodingInfo(encoding, jName, LAST_PRINTABLE_UNICODE);
                break;
            }
        }
        if(i == UNICODE_ENCODINGS.length) {
            eInfo = new EncodingInfo(encoding, jName, DEFAULT_LAST_PRINTABLE);
        }
        _encodings.put(jName, eInfo); 
        return eInfo;