5

如果使用我的 JRE 不支持的编码生成文件怎么办?无论如何扩展/自定义我的 JRE 可以处理的内容?

这可能是一个糟糕/无关的例子(我只是第一次复习字符集/编码),但我相信Linux JRE 不处理 CP-1252(一种 Windows 编码)。如果是这种情况,那么如何让 Java 应用程序在 Linux 机器上运行以读取 CP-1252 编码的文件?

即使 Linux JRE 发行版确实支持 CP-1252(这是一个可怕的例子),我也知道它不支持某些编码。无论这些编码是什么,有没有办法扩展它的标准Charactset,如果有,怎么做?

4

3 回答 3

4

Java 类库具有添加新字符集支持的机制;请参阅 .java 文档CharsetProvider

基本思想是编写一个实现CharsetProviderAPI 的类。然后在您的 JAR 文件中添加一个名为“/META-INF/services/java.nio.charset.spi.CharsetProvider”的文件,该文件以规定的格式列出您的字符集名称。

(我还遇到了这个错误报告http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4619777如果您尝试在受信任的小程序中添加自己的字符集,这可能会影响您......)


您是否知道任何已经这样做的“字符集扩展库”(并提供许多非标准字符集)?

我能找到的唯一例子是JCharset,它只添加了 8 个额外的字符集。

如果您(或其他任何人)需要不包含在内的字符集,我建议您下载 JCharset,实现新的字符集,然后将更改作为补丁发布给作者。

于 2013-02-26T22:26:29.803 回答
1

文档说:

可以通过 java.nio.charset.spi 包中 CharsetProvider 类中定义的接口提供对新字符集的支持。

按照链接并阅读说明...

于 2013-02-26T22:26:41.577 回答
0

来自 vmoksha 的 sunilkumar

请检查您的 .xml 文件是否包含 UTF-8

于 2013-02-27T12:41:29.753 回答