如何在Java / Android中定义新的Charset?

2022-09-04 20:59:50

在台湾,我们有一个名为“Unicode At One (UAO)”的字符编码,它是BIG-5的扩展,但Java和Android不支持。
代码页处于 http://moztw.org/docs/big5/table/uao241-b2u.txt

我的问题是,如何使用这个字符集构建一个包含字节数组数据的String对象?
我想我会扩展 String 类并在其中执行一些操作,但我不知道如何创建新的字符集。


答案 1

您可以通过编写 CharsetProvider 并通过服务发现机制注册它来添加自己的 Charset 实现。

您需要扩展并实现其 newDecodernewEncoder 方法,以分别返回相应的 CharsetDecoderCharsetEncoderCharset


答案 2

我想通过@Joachim在答案中再补充一些。

自定义字符集的示例包含在 Ron Hitchens 的 Java NIO 一书中。您可以从支持站点下载 Charset 和 CharsetProvider 的示例。请注意,您必须创建一个文件 META-INF/services/java.nio.charset.spi.CharsetProvider,其中包含附加的 FQCN,并将其放入您将要制作的文件中。CharsetProviderjar


推荐