如果我的JRE不支持字符编码怎么办?

时间:2013-02-26 22:20:25

标签: java character-encoding

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

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

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

3 个答案:

答案 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)

The documentation说:

  

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

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

答案 2 :(得分:0)

来自vmoksha的sunilkumar

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