Charset
StandardCharsets
1、常规定义的标准 Charsets
2、这些字符集保证在 Java 平台的每个实现上都可用
public final class StandardCharsets {
private StandardCharsets() {
throw new AssertionError("No java.nio.charset.StandardCharsets instances for you!");
}
public static final Charset US_ASCII = Charset.forName("US-ASCII");
public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
public static final Charset UTF_8 = Charset.forName("UTF-8");
public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
public static final Charset UTF_16LE = Charset.forName("UTF-16LE");
public static final Charset UTF_16 = Charset.forName("UTF-16");
}
Charset
1、16 位 Unicode code units 和字节序列之间的命名映射
2、该类定义了用于创建解码器和编码器以及检索与字符集关联的各种名称的方法
3、这个类的实例是不可变的
4、此类还定义了用于测试是否支持特定字符集的静态方法,用于通过名称查找字符集实例,以及构造包含当前 JVM 中可用的每个字符集的映射,可以通过 CharsetProvider 类中定义的服务提供程序接口添加对新字符集的支持
5、此类中定义的所有方法都可以安全地被多个并发线程使用
6、返回 charsetName 的 charset 对象
public static Charset forName(String charsetName)
(1)charsetName:请求的字符集的名称,可能是规范名称或别名
7、构造从规范字符集名称到字符集对象的 SortedMap
public static SortedMap<String,Charset> availableCharsets()
(1)此方法返回的 SortedMap,将为当前 JVM 中可用的每个字符集都有一个条目
(2)如果两个或多个支持的字符集具有相同的规范名称,则生成的 SortedMap 将仅包含其中的一个,它将包含哪一个没有指定
(3)调用此方法以及后续使用生成的 SortedMap,可能会导致耗时的磁盘或网络 I / O 操作发生
(4)为需要枚举所有可用字符集的应用程序提供此方法,例如允许用户选择字符集,forName 方法不使用此方法,而是采用有效的增量查找算法
(5)如果新的字符集提供程序动态地可用于当前的 JVM,则此方法可能会在不同时间返回不同的结果,在没有这些更改的情况下,通过此方法返回的字符集恰好是可以通过 forName 方法检索的字符集
(6)返回从规范字符集名称到字符集对象的不可变的,不区分大小写的 SortedMap
8、返回此 JVM 的默认字符集
public static Charset defaultCharset()
(1)默认字符集在虚拟机启动期间确定,通常取决于底层操作系统的区域设置和字符集
9、告诉是否支持命名的字符集
public static boolean isSupported(String charsetName)
(1)charsetName:请求的字符集的名称,可能是规范名称或别名
(2)当前 JVM 中可用的命名字符集的支持,则返回 true
10、返回此字符集的规范名称
public final String name()
11、将此字符集中的字节解码为 Unicode 字符
public final CharBuffer decode(ByteBuffer bb)
(1)在字符集 cs 上调用以下方法返回与表达式相同的结果
cs.newDecoder()
.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE)
.decode(bb);
(2)除了它可能更有效率,因为它可以在连续调用之间缓存解码器
(3)此方法总是用此字符集的默认替换字节数组,替换格式错误的输入和不可映射字符序列,为了检测这些序列,请直接使用 CharsetDecoder.decode(java.nio.ByteBuffer) 方法
(4)bb:要解码的字节缓冲区
12、在这个字符集中将 Unicode 字符编码为字节
public final ByteBuffer encode(CharBuffer cb)
(1)在字符集 cs 上调用以下方法返回与表达式相同的结果
cs.newEncoder()
.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE)
.encode(bb);
(2)除了它可能更有效率,因为它可以在连续调用之间缓存编码器
(3)此方法总是用此字符集的默认替换字符串,替换格式错误的输入和不可映射字符序列,为了检测这些序列,请直接使用 CharsetEncoder.encode(java.nio.CharBuffer) 方法
(4)cb:要编码的 char 缓冲区
13、在此字符集中将字符串编码为字节
public final ByteBuffer encode(String str)
(1)在字符集 cs 上调用以下方法返回与表达式相同的结果
cs.encode(CharBuffer.wrap(s));
(2)str:要编码的字符串
14、为此字符集构造一个新的解码器
public abstract CharsetDecoder newDecoder()
15、此字符集构造一个新的编码器
public abstract CharsetEncoder newEncoder()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战