手动加载Java Charset

时间:2011-06-10 15:30:23

标签: java character-encoding javamail utf-7

我正在使用JavaMail API做一些工作,并且我遇到了Java本身不支持的编码(按设计),例如UTF7 / unicode-1-1-utf-7 。特别是对于那种编码,我发现了UTF7的CharsetCharsetProvider的{​​{3}}实现。但是,将jutf7.jar添加到我的类路径后,我仍然得到UnsupportedEncodingException s,而unicode-1-1-utf-7肯定是JUTF7的别名之一。

有没有办法手动加载Charset或确保加载Charset以便我可以将其作为原因进行排除?

2 个答案:

答案 0 :(得分:6)

除了将必要的类放入类路径之外,使用新的Charset还有一些问题。引用Javadocs:

  

字符集提供程序标识自己   使用提供程序配置文件   命名   java.nio.charset.spi.CharsetProvider   在资源目录中   META-INF /服务。该文件应该   包含完全合格的列表   具体的charset-provider类名,   每行一个。 [...]

http://download.oracle.com/javase/6/docs/api/java/nio/charset/spi/CharsetProvider.html

这个特殊文件是否存在于JAR中?

答案 1 :(得分:2)

您应该确保主类加载器加载了jar。您可以通过将jar添加到JVM的jre/lib/ext扩展目录,或者将其添加到主程序的类路径中来实现此目的。例如,如果您使用的是Tomcat,请将-cp /path/to/jutf7.jar添加到Tomcat的启动脚本中。

同样,如果你想从scala REPL测试jutf7,你需要按如下方式启动它

env JAVA_OPTS="-cp /path/to/jutf7-1.0.0.jar" scala

使用Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

进行测试