8

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

有没有办法手动加载Charset或确保Charset正在加载,以便我可以排除这是一个原因?

4

2 回答 2

7

除了将必要的类放入类路径之外,使用新的字符集还有更多内容。引用 Javadocs:

字符集提供者使用资源目录 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 中?

于 2011-06-10T18:27:58.670 回答
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)

于 2012-06-21T07:51:14.123 回答