gpt4 book ai didi

java - 无法从我的 XML 中读取 ZÖE、DÉCOR CIARÁN 等字符?

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:41 26 4
gpt4 key购买 nike

我有一个很大的 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 这样的字符时,它正在保存,但是当我读取时,数据就像这样 CIARAN AURÉLIE BARGEME 但不是插入的那样。

 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。 Java API 自动将字符与 UTF-8 相互转换。

向服务器写入文档时,您需要知道它们是否已采用 UTF-8 编码。如果文档不是 UTF-8,您必须指定其编码,否则您很可能会因为编码不正确而导致数据包含不正确的字符。如果您指定非 UTF-8 编码,Java API 将在写入 MarkLogic 时自动将编码转换为 UTF-8。

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

关于java - 无法从我的 XML 中读取 ZÖE、DÉCOR CIARÁN 等字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30099293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com