java - 无法通过 JAVA API 将带有 iso 编码的 xml 写入 Marklogic

标签 java xml encoding utf-8 marklogic

我们尝试通过 JAVA API 将 ISO 编码的 xml 插入 MarkLogic,但收到此错误。 xml中包含特殊字符,例如:注册商标符号 -

®

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);

最佳答案

斯拉文:

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

http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#InputStreamReader-java.io.InputStream-java.lang.String-

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

http://docs.marklogic.com/guide/java/document-operations#id_11208

希望有帮助,

关于java - 无法通过 JAVA API 将带有 iso 编码的 xml 写入 Marklogic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027838/

相关文章:

java - 是否可以反转对 String replaceAll 方法的调用?

Java 正则表达式 : matching comments and NOT matching specific character

java - 使用 Java 将 xml 转换为 json

c# - 如何在 XML 序列化中插入 XML 注释?

xml - 为什么 Apache Hive XPath 只返回第一个匹配项?

java - JAXB - 将 XML 文件映射到 Java 类

java - 如果 completableFuture 失败,如何记录?

encoding - 如何读取 DAF( double 组文件) "transfer"文件?

java - "Unmappable character for encoding UTF-8"错误

ios - Swift URL.path 更改 utf-8 字符的编码