You need to enable JavaScript to run this app. OpenJDK 11无Charsets.jar时如何完成ISCII91编码印地语字节数组转换
优惠活动
大模型
产品
解决方案
定价
更多

OpenJDK 11无Charsets.jar时如何完成ISCII91编码印地语字节数组转换

OpenJDK 11环境下Charsets.jar与ISCII91操作问题解答

Charsets.jar的OpenJDK可用性判定

  • 你提到的独立归档Charsets.jar,不是OpenJDK官方维护、随标准OpenJDK安装包分发的组件,在常规OpenJDK 11的目录结构中不存在对应文件
  • 注意区分概念:OpenJDK核心类库的基础字符集实现是直接集成在java.base模块内的,和独立的Charsets.jar没有依赖关系,不存在“OpenJDK必须安装Charsets.jar才能运行基础字符集逻辑”的要求

组件获取与许可约束说明

  • 许可属性:历史上Oracle JDK中独立打包的Charsets.jar,内部包含的ISCII91等南亚语言字符集实现,始终受Oracle二进制代码许可(BCL)的约束,从Oracle JDK安装包提取的该组件,依然不能随意二次分发、嵌入商用项目
  • 获取途径:该组件没有OpenJDK官方的独立下载渠道,如果一定要使用,只能从对应版本的Oracle JDK发行包的lib目录下手动提取,不存在合规的、受官方支持的获取路径
  • 替代方案:OpenJDK生态已经有完全规避Oracle许可约束的ISCII91兼容实现,完全不需要依赖Oracle的闭源Charsets.jar组件完成相关操作

ISCII91编码/解码操作实现

接入合规的ISCII91字符集实现后,可直接通过JDK标准Charset API完成两类核心操作,无需自行编写转换逻辑:

1. 将印地语字符串编码为ISCII91格式字节数组

// 加载已接入的ISCII91字符集实例
Charset iscii91Charset = Charset.forName("ISCII91");
// 待编码的印地语文本
String sourceHindiText = "需编码的印地语内容";
// 生成ISCII91编码的字节数组
byte[] isciiEncodedBytes = sourceHindiText.getBytes(iscii91Charset);

2. 将ISCII91编码的印地语字节数组转换为UTF格式

Charset iscii91Charset = Charset.forName("ISCII91");
// 待解码的原始ISCII91字节数组
byte[] rawIsciiBytes = 来源为ISCII91编码的字节数组;
// 第一步:将ISCII91字节解码为JDK内部统一的UTF-16字符序列
String decodedText = iscii91Charset.decode(ByteBuffer.wrap(rawIsciiBytes)).toString();
// 第二步:转换为对外常用的UTF-8格式字节数组
byte[] utfFormattedBytes = decodedText.getBytes(StandardCharsets.UTF_8);

提示:如果没有提前接入ISCII91对应的字符集实现,调用Charset.forName("ISCII91")会直接抛出UnsupportedCharsetException,这也是当前环境下未找到对应字符集逻辑的核心诱因。


内容的提问来源于stack exchange,提问作者mediocre man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 04:15:03