nio.charset.UnsupportedCharsetException 解决

JVM不包含字符集的解决办法

当使用Charset.forName("GB2312") 这个方法的时候,要求JVM本身包含该字符集。
Charset.availableCharsets() 查看所有可用字符集,如果不包含会报错。

public class ChineseCharsetProvider extends CharsetProvider {
    private static final String GB2312 = "GB2312";
    private static final String BIG5 = "Big5";
    private static final String GBK = "GBK";

    @Override
    public Iterator<Charset> charsets() {
        return Collections.emptyIterator();
    }

    @Override
    public Charset charsetForName(String charsetName) {
        if (GB2312.equalsIgnoreCase(charsetName) || BIG5.equalsIgnoreCase(charsetName))
            return Charset.forName(GBK);
        return Charset.defaultCharset();
    }
}

使用这样一个转换器,当使用不包含的中文字符集时,转为调用可用字符集。通过在META-INF中配置进行调用。

项目resource资源文件夹下的建立META-INF/services文件夹,在其下建一个文本,文件名为java.nio.charset.spi.CharsetProvider
在这个文件中,把我们刚刚写的 CharsetProvider 全类名写在里面。这样就会自动调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值