XML文档如下,使用GBK编码:
<?xml version="1.0" encoding="GBK"?>
<aaa>
 <bbb>测试</bbb>
</aaa>在JBuilder里,使用如下代码访问正常
Document document = null;
try {
    File file = new File("C:/test.xml");
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse(file);
} catch(Exception e) {
    e.printStackTrace();
}但是我往工程Required Libraries里添加weblogic.jar (weblogic版本为8)后
document = builder.parse(file)这句报错:
org.xml.sax.SAXParseException: Invalid encoding name "GBK". at weblogic.apache.xerces.parsers.DOMParser.parse(DOMParser.java:271) at weblogic.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:201) at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:149) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:151)

解决方案 »

  1.   


    说了很清楚了呀org.xml.sax.SAXParseException: Invalid encoding name "GBK".<?xml version="1.0" encoding="GBK"?>
    改成
    <?xml version="1.0" encoding="UTF-8" ?> or 干脆不声明encoding属性。如果是在中文系统下:就改成
    <?xml version="1.0" encoding="gb2312" ?> 如果你是改的别人的xml文档,但之前该xml文档是UTF-8/16编码的,
    <?xml version="1.0" encoding="gb2312" ?>不能显示中文,因为该文档不是gb2312编码的,虽然你强制申明它要用gb2312编码转换,但gb2312编码机制处理不了UTF-8/16的编码。必须用UTF-8/16编码机制转换
      

  2.   

    加载weblogic.jar之前,xml dom api使用jdk提供的crimson实现,加载weblogic.jar之后,weblogic提供的xerces实现取代了crimson实现,也就出现不兼容的问题,致于要求jdk使用哪一种解析器实现,是可以控制的。关于一些xml解析api和实现的技术细节,可以google一下,csdn的文档区也有。可用的关键字有:xml 解析器 crimson xerces dom sax
      

  3.   

    to hoho1979(气魄,格局) 
    我是调用第三方的webservice获取xml的,无法修改encodingto wingtrace(无心·无梦·无语) 
    谢谢,我找找看
      

  4.   

    在jre/lib目录下指定
    新建一个文件jaxp.properties
    指定javax.xml.parsers.DocumentBuilderFactory=org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
    可以解决问题,但感觉很麻烦
    能不能在程序里指定,或者解决在xerces下访问GBK的问题?