Java 11 xml 处理产生除 java 8 之外的其他输出 - 高代理问题

问题描述 投票:0回答:1

我们从 java 8 迁移到 java 11,现在在处理特定 UTF-8 字符(例如“赵𮧵”)时遇到了一些问题。 使用java 8我们的xml转换生成“赵𮧵”,使用java 11我们得到“赵��”。

调试代码我发现这发生在 SAXParser 的某个地方。读入数据的字节表示形式没问题,在生成输出的 ToStream(或 ToXMLStream)中,错误的数据已经是流的一部分。

我想调试这个问题以找出发生了什么,但我没有找到包含调试信息的 xerces jar 版本。这个在哪里可以买到吗?

我还尝试下载 xerces 项目。这似乎只能作为 svn 提供,但我无法使用存储库浏览器访问它。也许我没有使用正确的网址...

java xalan
1个回答
0
投票

java 11 的问题是你必须使用另一个 XML 序列化器。在java 8中,通常使用发行版中包含的序列化器,在java 8中,您必须使用另一个序列化器,通常是xalan。该序列化程序在最新发布的版本(2.7.3)中存在与高代理字符相关的错误。 幸运的是,已经提交了修复程序(https://github.com/apache/xalan-java)。你必须用这个修复程序构建你自己的 jar,然后问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.