de.schlichtherle.truezip.nio.charset.ZipCharsetProvider Maven / Gradle / Ivy
/*
* Copyright (C) 2005-2015 Schlichtherle IT Services.
* All rights reserved. Use is subject to license terms.
*/
package de.schlichtherle.truezip.nio.charset;
import java.nio.charset.Charset;
import java.nio.charset.spi.CharsetProvider;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.concurrent.Immutable;
/**
* A charset provider that only provides the {@code IBM437} character set,
* also known as {@code CP437}.
*
* @author Christian Schlichtherle
*/
@Immutable
public final class ZipCharsetProvider extends CharsetProvider {
private static final Map CHARSETS;
static {
Logger logger = Logger.getLogger( ZipCharsetProvider.class.getName(),
ZipCharsetProvider.class.getName());
Map charsets = new HashMap();
for (Charset charset : new Charset[] {
new Ibm437Charset(),
}) {
charsets.put(lowerCase(charset.name()), charset);
for (String alias : charset.aliases())
charsets.put(lowerCase(alias), charset);
logger.log(Level.CONFIG, "providing",
new Object[] { charset.displayName(), charset.aliases() });
}
CHARSETS = Collections.unmodifiableMap(charsets);
}
private static String lowerCase(String s) {
return s.toLowerCase(Locale.ROOT);
}
@Override
public Iterator charsets() {
return CHARSETS.values().iterator();
}
@Override
public Charset charsetForName(String charset) {
return CHARSETS.get(lowerCase(charset));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy