Java 无法读取ZÖ;E、 DÉ;相关和#xC1;我的XML中的N等?

Java 无法读取ZÖ;E、 DÉ;相关和#xC1;我的XML中的N等?,java,xml,marklogic,Java,Xml,Marklogic,我有一个很大的XML。在我的XML中有一些字符,如ZÖE、DÉCOR CIARÁN。我使用Java和MarkLogic作为我的数据库。我无法用这些单词阅读我的XML,当我删除这些单词并检查它是否工作正常时 我的Java代码: DatabaseClient client = DatabaseClientFactory.newClient(IP, PORT, DATABASE_NAME, USERNAME, PWD, Authentication.DIGEST);

我有一个很大的XML。在我的XML中有一些字符,如ZÖE、DÉCOR CIARÁN。我使用JavaMarkLogic作为我的数据库。我无法用这些单词阅读我的XML,当我删除这些单词并检查它是否工作正常时

我的Java代码:

    DatabaseClient client = DatabaseClientFactory.newClient(IP, PORT,
        DATABASE_NAME, USERNAME, PWD, Authentication.DIGEST);

    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    DOMHandle xmlhandle = new DOMHandle();
    docMgr.read("/" + filename, xmlhandle);
更改问题: 正如我所说,我无法阅读特殊字符,现在我如何插入特殊字符,以便在阅读时获得相同的格式

例如: 当我插入像CIARÁN AURÉLIE BARGÈME这样的字符时,它正在保存,但当我读取时,数据是这样的,但不是插入的

 DatabaseClient client = DatabaseClientFactory.newClient(IP, PORT,
        DATABASE_NAME, USERNAME, PWD, Authentication.DIGEST);

    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    DOMHandle xmlhandle = new DOMHandle();
    docMgr.read("/" + filename, xmlhandle);
    String doc = xmlhandle.ToString();
    String data = Normalizer.normalize(doc, Normalizer.Form.NFD)
                    .replaceAll("[^\\p{ASCII}]", "");

我使用Normalizer读取特殊字符,否则正常的xmlhandle就可以了。

根据他们的官方文档:

如果指定的编码结果是错误的编码,那么转换结果可能不会如您所期望的那样

MarkLogic Server将文本、XML和JSON存储为UTF-8。在Java中,内存和读取流中的字符是UTF-16。JavaAPI自动将字符与UTF-8进行转换

将文档写入服务器时,需要知道它们是否已经进行UTF-8编码。如果文档不是UTF-8,则必须指定其编码,否则很可能会由于编码错误而导致数据具有不正确的字符。如果指定非UTF-8编码,则Java API将在写入MarkLogic时自动将编码转换为UTF-8


加载文档时,您可能需要设置编码utf-8或AUTO,因为我使用XMLStreamReaderHandle将XML写入markLogic,所以它会自动转换。我猜是这样吗?是的,正如u所说,javaAPI将转换为utf-8。在这里,当我编写®,欧元这些。它正在转换成一些,并且在阅读它的工作细节时。但是像我提到的ZÖE,DÉCOR CIARÁN这样的角色并没有转换成任何形式。那么是什么导致了这里的问题呢。我使用的XML文件是用ISO-8859-1编码的。如果
®
有效,则肯定不是ISO-8859-1,因为它不包含这些字符。它可以是CP-1252或ISO-8859-15,因为它们有时都被错误标记为ISO-8859-1,或者在调用ISO-8859-1时使用(因为它们都是它的完美超集),并且确实包含这些字符。这里提到的所有三种编码都包含
Á
É
Ö
。@SunilKumar,正如你所说的,我现在可以读取字符,但这些字符类似于我的XML中的ZOE、DECOR CIARAN,但类似于ZÖE、DÉCOR CIARÁN等。您能告诉我如何读取与XML中相同的字符吗?能否尝试实现InputStreamReader(con.getInputStream(),“UTF-8”)