Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过JAVA API将iso编码的xml写入Marklogic_Java_Xml_Encoding_Utf 8_Marklogic - Fatal编程技术网

无法通过JAVA API将iso编码的xml写入Marklogic

无法通过JAVA API将iso编码的xml写入Marklogic,java,xml,encoding,utf-8,marklogic,Java,Xml,Encoding,Utf 8,Marklogic,我们正试图通过JavaAPI将ISO编码的xml插入到MarkLogic中,但出现了此错误。xml包含特殊字符,例如:注册商标符号-® 代码: 斯拉文: 解决方案是通过将输入流包装到InputStreamReader中,在读取资源时指定当前ISO编码: 当Java API知道内容具有不同的编码,但假定内容已经是UTF-8时,它会转换为UTF-8。有关编码转换的更多详细信息,请参阅: 希望这能有所帮助,如果我们使用mlcp(marklogic content pump)加载这个xmlYes,我

我们正试图通过JavaAPI将ISO编码的xml插入到MarkLogic中,但出现了此错误。xml包含特殊字符,例如:注册商标符号-®

代码:

斯拉文:

解决方案是通过将输入流包装到InputStreamReader中,在读取资源时指定当前ISO编码:

当Java API知道内容具有不同的编码,但假定内容已经是UTF-8时,它会转换为UTF-8。有关编码转换的更多详细信息,请参阅:


希望这能有所帮助,

如果我们使用mlcp(marklogic content pump)加载这个xmlYes,我们会得到同样的错误,代码是…?您已经问过了,但措辞略有不同@我们已经添加了有问题的代码。我尝试使用XMLEventReaderHandle和XMLStreamReaderHandle。这对于使用UTF-8编码的xml文件非常有效,即插入和检索都成功(此处Marklogic将特殊字符转换为其他形式,检索时显示正确的形式),但当我尝试使用ISO编码的xml时,我可以插入但无法检索文件中的特殊字符。MarkLogic始终将JSON、文本和XML文档存储为UTF-8。如果应用程序或工具需要以某些其他编码(如ISO-8859-1)读取文档,则可以使用InputStreamHandle打开文档上的InputStream,然后使用指定所需编码字符集的读取器(或其他读取API)将其包装。
Bad Request. Server Message: XDMP-DOCUTF8SEQ: Invalid UTF-8 escape sequence at  line 14145 -- document is not UTF-8 encoded. 
DatabaseClient client = DatabaseClientFactory.newClient(IP, PORT,
                DATABASE_NAME, USERNAME, PWD, Authentication.DIGEST);
            // acquire the content
            InputStream xmlDocStream = XMLController.class.getClassLoader()
                    .getResourceAsStream("path to xml file");

            // create a manager for XML documents
            XMLDocumentManager xmlDocMgr = client.newXMLDocumentManager();

            // create a handle on the content
            InputStreamHandle xmlhandle = new InputStreamHandle(xmlDocStream);

            // write the document content
            xmlDocMgr.write("/" + filename, xmlhandle);