package com.xiaoleilu.hutool.util; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; /** * 字符集工具类 * @author xiaoleilu * */ public final class CharsetUtil { /** ISO-8859-1 */ public static final String ISO_8859_1 = "ISO-8859-1"; /** UTF-8 */ public static final String UTF_8 = "UTF-8"; /** GBK */ public static final String GBK = "GBK"; /** ISO-8859-1 */ public static final Charset CHARSET_ISO_8859_1 = StandardCharsets.ISO_8859_1; /** UTF-8 */ public static final Charset CHARSET_UTF_8 = StandardCharsets.UTF_8; /** GBK */ public static final Charset CHARSET_GBK = Charset.forName(GBK); private CharsetUtil() {} /** * 转换为Charset对象 * @param charsetName 字符集,为空则返回默认字符集 * @return Charset */ public static Charset charset(String charsetName){ return StrUtil.isBlank(charsetName) ? Charset.defaultCharset() : Charset.forName(charsetName); } /** * 转换字符串的字符集编码 * @param source 字符串 * @param srcCharset 源字符集,默认ISO-8859-1 * @param destCharset 目标字符集,默认UTF-8 * @return 转换后的字符集 */ public static String convert(String source, String srcCharset, String destCharset) { return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); } /** * 转换字符串的字符集编码 * @param source 字符串 * @param srcCharset 源字符集,默认ISO-8859-1 * @param destCharset 目标字符集,默认UTF-8 * @return 转换后的字符集 */ public static String convert(String source, Charset srcCharset, Charset destCharset) { if(null == srcCharset) { srcCharset = StandardCharsets.ISO_8859_1; } if(null == destCharset) { destCharset = StandardCharsets.UTF_8; } if (StrUtil.isBlank(source) || srcCharset.equals(destCharset)) { return source; } return new String(source.getBytes(srcCharset), destCharset); } /** * 系统字符集编码,与 {@link CharsetUtil#defaultCharsetName()}功能相同,别名不同 * * @see CharsetUtil#defaultCharsetName() * @return 系统字符集编码 */ public static String systemCharset() { return defaultCharsetName(); } /** * 系统默认字符集编码 * * @see CharsetUtil#defaultCharsetName() * @return 系统字符集编码 */ public static String defaultCharsetName() { return Charset.defaultCharset().name(); } /** * 系统默认字符集编码 * * @see CharsetUtil#defaultCharsetName() * @return 系统字符集编码 */ public static Charset defaultCharset() { return Charset.defaultCharset(); } }