All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.quickfixj.CharsetSupport Maven / Gradle / Ivy

There is a newer version: 2.3.1
Show newest version
/*******************************************************************************
 * Copyright (c) quickfixengine.org  All rights reserved.
 *
 * This file is part of the QuickFIX FIX Engine
 *
 * This file may be distributed under the terms of the quickfixengine.org
 * license as defined by quickfixengine.org and appearing in the file
 * LICENSE included in the packaging of this file.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE.
 *
 * See http://www.quickfixengine.org/LICENSE for licensing information.
 *
 * Contact [email protected] if any conditions of this licensing
 * are not clear to you.
 ******************************************************************************/

package org.quickfixj;

import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;

public class CharsetSupport {

    private static final Charset CHARSET_ISO_8859_1 = Charset.forName("ISO-8859-1");
    private static final Charset CHARSET_ASCII = Charset.forName("US-ASCII");

    private static String charset = getDefaultCharset();
    private static Charset charsetInstance = Charset.forName(charset);
    private static boolean isStringEquivalent = isStringEquivalent(charsetInstance);

    public static String getDefaultCharset() {
        return "ISO-8859-1";
    }

    /**
     * Returns whether the given charset's byte representation of a string
     * is equivalent (as unsigned values) to the string characters themselves.
     *
     * @param charset a charset
     * @return whether the charset encoding is string-equivalent
     */
    public static boolean isStringEquivalent(Charset charset) {
        // ASCII and ISO-8859-1 are unique in that their encoded byte representation
        // is equivalent to their respective Java String (UTF-16BE) chars
        return charset.equals(CHARSET_ISO_8859_1) || charset.equals(CHARSET_ASCII);
    }

    /**
     * Returns whether the current charset's byte representation of a string
     * is equivalent (as unsigned values) to the string characters themselves.
     *
     * @return whether the charset encoding is string-equivalent
     */
    public static boolean isStringEquivalent() {
        return isStringEquivalent;
    }

    public static void setCharset(String charset) throws UnsupportedEncodingException {
        CharsetSupport.charset = validate(charset);
        CharsetSupport.charsetInstance = Charset.forName(charset);
        CharsetSupport.isStringEquivalent = isStringEquivalent(charsetInstance);
    }

    public static String getCharset() {
        return charset;
    }

    public static Charset getCharsetInstance() {
        return charsetInstance;
    }

    public static String validate(String charset) throws UnsupportedEncodingException {
        if (!Charset.isSupported(charset)) {
            throw new UnsupportedEncodingException(charset);
        }
        return charset;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy