手动加载Java Charset

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

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

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

charset提供程序使用资源目录META-INF / services中名为java.nio.charset.spi.CharsetProvider的提供程序配置文件来标识自身。 该文件应包含完全限定的具体charset-provider类名列表,每行一个。 […]

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

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

您应该确保主类加载器加载了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)