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