每当我在SUN Java(构建1.6.0_10-rc2-b32和其他1.6.x版本)下启动基于Apache Felix(OSGi)的应用程序时,我在控制台上看到以下消息输出(通常在Ubuntu 8.4下):
警告:Java运行时不支持编码'UTF-8'.
在运行Tomcat和Resin时,我偶尔也会看到此消息显示.如果java支持unicode和UTF-8,导致此消息的原因是什么?我还没有找到任何参考,或者在其他地方找到答案.
根据文档 "Java平台的每个实现都需要支持以下标准字符集... US-ASCII,ISO-8859-1,UTF-8,UTF-16BE,UTF-16LE,UTF-16." 所以我怀疑Sun发布了没有UTF-8支持的版本.
实际的错误消息似乎来自此处,它是Xerces XML解析器的一部分.我想这是问题发生的XML解析器.
尝试以下程序:
import java.nio.charset.Charset; public class TestCharset { public static void main(String[] args) { System.out.println(Charset.forName("UTF-8")); } }
如果这会引发异常,那么JDK就会出现问题.如果它打印"UTF-8",那么你的JDK就可以了,你的应用程序正在做一些奇怪的事情.
如果是这种情况,请在调试器下运行您的应用程序,并在http://www.java2s.com/Open-Source/Java-Document/XML/xalan/org/apache/xml/serializer/ToStream.java中添加断点. .htm - 这是产生此警告的地方,并逐步查看Xalan无法找到编码的原因.