第一步:
JAVA自定义字符集(provider类好像不行,最后一步注册到JAVA字符集服务者机制中错误,其它类可以用):
https://blog.51cto.com/u_16213317/9742474
第二步:怎么注册:
在jar工程中创建第一步的四个类(自定义的字符集需要在一个jar工程中开发,引入该jar以后才能使用该自定义字符集)
在Java中,Charset.forName(String charsetName) 方法用于根据提供的字符集名称获取相应的 Charset 实例。如果你想要创建一个可以被 Charset.forName 方法获取的字符集,你实际上是在说如何注册一个自定义的字符集到Java的字符集服务提供者机制中。
Java的字符集服务提供者机制允许第三方实现者扩展Java平台的字符集支持。为了创建一个自定义的字符集并使其可被 Charset.forName 方法获取,你需要遵循以下步骤:
实现 Charset 接口:
你需要实现 java.nio.charset.Charset 接口或其抽象类 java.nio.charset.CharsetSPI 的相关方法。这包括定义字符集的名称、别名、是否支持编码和解码、获取编码器和解码器等。
创建服务提供者配置文件:
在项目的 resources/META-INF/services 目录下创建一个名为 java.nio.charset.spi.CharsetProvider 的文件。在该文件中,列出你实现的 CharsetProvider 类的全限定名(包括包名)。
实现 CharsetProvider 接口:
实现 java.nio.charset.spi.CharsetProvider 接口,并在其中提供你的自定义字符集的实例。你需要实现 charsets() 方法,该方法返回一个包含你所有自定义字符集的 Iterable<Charset>。
打包并部署:
将你的实现打包成一个JAR文件,并确保它位于Java类路径上。这样,当Java运行时环境启动时,它将能够发现并加载你的自定义字符集提供者。
使用 Charset.forName 获取:
一旦你的自定义字符集提供者被加载,你就可以使用 Charset.forName(String charsetName) 方法来获取你的自定义字符集了,其中 charsetName 是你在 Charset 实现中定义的名称。
请注意,这通常是一个高级任务,需要对Java的字符集和SPI机制有深入的了解。此外,由于Java平台已经提供了大量的标准字符集,因此在实际应用中,你可能不需要创建自定义字符集,除非你有特定的需求或目标。
如果你只是想在Java中使用一个非标准的字符集,但不需要创建一个全新的字符集,你可以考虑使用 CharsetEncoder 和 CharsetDecoder 类来手动处理编码和解码过程。这允许你以编程方式定义如何将字符转换为字节序列,以及如何将字节序列转换回字符。
自定义字符集开发工程
示例开发代码
引入自定义字符集jar包
字符集服务提供者配置文件
最后可以JAVA.nio.charset.Charset.forName(“Utf04”)找到字符集,但不能编码解码会报错








网友评论