如果使用我的JRE不支持的编码生成文件怎么办?无论如何都可以扩展/自定义我的JRE可以处理的内容吗?
这可能是一个糟糕/不相关的例子(我只是第一次刷字符集/编码),但我相信 Linux JRE不处理CP-1252(a Windows编码)。如果是这种情况,那么我怎样才能在Linux机器上运行Java应用程序来读取CP-1252编码的文件?
即使Linux JRE发行版 支持CP-1252(这是一个可怕的例子),我知道有一个事实,它有不支持的编码。无论这些编码是什么,有没有办法扩展其标准Charactset
,如果是,如何?
答案 0 :(得分:4)
Java类库有一个添加新字符集支持的机制;请参阅CharsetProvider
的javadoc。
基本思想是编写一个实现CharsetProvider
API的类。然后在您的JAR文件中添加一个名为“/META-INF/services/java.nio.charset.spi.CharsetProvider”的文件,以规定的格式列出您的字符集名称。
(我还遇到了这个错误报告http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4619777,如果您尝试在受信任的applet中添加自己的Charsets,可能会对您产生影响...)
你知道有没有“Charset扩展库”已经这样做了(并提供了很多非标准的字符集)?
我能找到的唯一例子是JCharset,它只增加了8个额外的字符集。
如果您(或其他任何人)需要未包含的字符集,我是否可以建议您下载JCharset,实施新的字符集,然后将更改作为补丁发布给作者。
答案 1 :(得分:1)
答案 2 :(得分:0)
请检查包含UTF-8的.xml文件