Class Charset

java.lang.Object
org.miaixz.bus.core.lang.Charset

public class Charset extends Object
字符集工具类
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • DEFAULT

      public static final Charset DEFAULT
      默认字符集信息
    • DEFAULT_CHARSET

      public static final String DEFAULT_CHARSET
    • DEFAULT_ISO_8859_1

      public static final String DEFAULT_ISO_8859_1
      ISO拉丁字母第1号,即ISO- Latin -1
      See Also:
    • ISO_8859_1

      public static final Charset ISO_8859_1
    • DEFAULT_US_ASCII

      public static final String DEFAULT_US_ASCII
      7位ASCII码,即ISO646-US,也就是Unicode字符集的基本拉丁字符块
      See Also:
    • US_ASCII

      public static final Charset US_ASCII
    • DEFAULT_GBK

      public static final String DEFAULT_GBK
      GBK UCS 转换格式
      See Also:
    • GBK

      public static final Charset GBK
    • DEFAULT_GB_2312

      public static final String DEFAULT_GB_2312
      GB2312 转换格式
      See Also:
    • GB_2312

      public static final Charset GB_2312
    • DEFAULT_GB_18030

      public static final String DEFAULT_GB_18030
      GB18030 编码
      See Also:
    • GB_18030

      public static final Charset GB_18030
    • DEFAULT_UTF_8

      public static final String DEFAULT_UTF_8
      8位UCS转换格式
      See Also:
    • UTF_8

      public static final Charset UTF_8
    • DEFAULT_UTF_16

      public static final String DEFAULT_UTF_16
      16位UCS转换格式,字节顺序由可选的字节顺序标记标识
      See Also:
    • UTF_16

      public static final Charset UTF_16
    • DEFAULT_UTF_16_BE

      public static final String DEFAULT_UTF_16_BE
      16位UCS转换格式,大写字节顺序
      See Also:
    • UTF_16_BE

      public static final Charset UTF_16_BE
    • DEFAULT_UTF_16_LE

      public static final String DEFAULT_UTF_16_LE
      16位UCS转换格式,小写字节顺序
      See Also:
    • UTF_16_LE

      public static final Charset UTF_16_LE
    • DEFAULT_UTF_32_BE

      public static final String DEFAULT_UTF_32_BE
      32位UCS转换格式,大写字节顺序
      See Also:
    • UTF_32_BE

      public static final Charset UTF_32_BE
    • DEFAULT_UTF_32_LE

      public static final String DEFAULT_UTF_32_LE
      32位UCS转换格式,小写字节顺序
      See Also:
    • UTF_32_LE

      public static final Charset UTF_32_LE
  • Constructor Details

    • Charset

      public Charset()
  • Method Details

    • charset

      public static Charset charset(String charsetName) throws UnsupportedCharsetException
      转换为Charset对象
      Parameters:
      charsetName - 字符集,为空则返回默认字符集
      Returns:
      Charset
      Throws:
      UnsupportedCharsetException - 编码不支持
    • parse

      public static Charset parse(String charsetName)
      解析字符串编码为Charset对象,解析失败返回系统默认编码
      Parameters:
      charsetName - 字符集,为空则返回默认字符集
      Returns:
      Charset
    • parse

      public static Charset parse(String charsetName, Charset defaultCharset)
      解析字符串编码为Charset对象,解析失败返回默认编码
      Parameters:
      charsetName - 字符集,为空则返回默认字符集
      defaultCharset - 解析失败使用的默认编码
      Returns:
      Charset
    • convert

      public static String convert(String source, String srcCharset, String destCharset)
      转换字符串的字符集编码
      Parameters:
      source - 字符串
      srcCharset - 源字符集,默认ISO-8859-1
      destCharset - 目标字符集,默认UTF-8
      Returns:
      转换后的字符集
    • convert

      public static String convert(String source, Charset srcCharset, Charset destCharset)
      转换字符串的字符集编码 当以错误的编码读取为字符串时,打印字符串将出现乱码。 此方法用于纠正因读取使用编码错误导致的乱码问题。 例如,在Servlet请求中客户端用GBK编码了请求参数,我们使用UTF-8读取到的是乱码,此时,使用此方法即可还原原编码的内容
       客户端 - GBK编码 - Servlet容器 - UTF-8解码 - 乱码
       乱码 - UTF-8编码 - GBK解码 - 正确内容
       
      Parameters:
      source - 字符串
      srcCharset - 源字符集,默认ISO-8859-1
      destCharset - 目标字符集,默认UTF-8
      Returns:
      转换后的字符集
    • convert

      public static File convert(File file, Charset srcCharset, Charset destCharset)
      转换文件编码 此方法用于转换文件编码,读取的文件实际编码必须与指定的srcCharset编码一致,否则导致乱码
      Parameters:
      file - 文件
      srcCharset - 原文件的编码,必须与文件内容的编码保持一致
      destCharset - 转码后的编码
      Returns:
      被转换编码的文件
    • systemCharsetName

      public static String systemCharsetName()
      系统字符集编码,如果是Windows,则默认为GBK编码,否则取 defaultCharsetName()
      Returns:
      系统字符集编码
      See Also:
    • systemCharset

      public static Charset systemCharset()
      系统字符集编码,如果是Windows,则默认为GBK编码,否则取 defaultCharsetName()
      Returns:
      系统字符集编码
      See Also:
    • defaultCharsetName

      public static String defaultCharsetName()
      系统默认字符集编码
      Returns:
      系统字符集编码
    • defaultCharset

      public static Charset defaultCharset()
      系统默认字符集编码
      Returns:
      系统字符集编码
    • detect

      public static Charset detect(InputStream in, Charset... charsets)
      探测编码 注意:此方法会读取流的一部分,然后关闭流,如重复使用流,请使用使用支持reset方法的流
      Parameters:
      in - 流,使用后关闭此流
      charsets - 需要测试用的编码,null或空使用默认的编码数组
      Returns:
      编码
      See Also:
    • detect

      public static Charset detect(int bufferSize, InputStream in, Charset... charsets)
      探测编码 注意:此方法会读取流的一部分,然后关闭流,如重复使用流,请使用使用支持reset方法的流
      Parameters:
      bufferSize - 自定义缓存大小,即每次检查的长度
      in - 流,使用后关闭此流
      charsets - 需要测试用的编码,null或空使用默认的编码数组
      Returns:
      编码
      See Also:
    • newEncoder

      public static CharsetEncoder newEncoder(Charset charset, CodingErrorAction action)
      创建一个新的CharsetEncoder实例,配置指定的字符集和错误处理策略。
      Parameters:
      charset - 指定的字符集,不允许为null。
      action - 对于不合法的字符或无法映射的字符的处理策略,不允许为null
      Returns:
      配置好的CharsetEncoder实例
    • newDecoder

      public static CharsetDecoder newDecoder(Charset charset, CodingErrorAction action)
      创建一个新的CharsetDecoder实例,配置指定的字符集和错误处理行为。
      Parameters:
      charset - 指定的字符集,不允许为null。
      action - 当遇到不合法的字符编码或不可映射字符时采取的行动,例如忽略、替换等。
      Returns:
      配置好的CharsetDecoder实例,用于解码字符。