首页 > 解决方案 > xml 中的 Unicode 字符

问题描述

在 XML 文件上运行 xquery 时遇到错误。实际上,XML 中有一些元素与数据一起具有 unicode 字符。

      "+30 2222032000",
      "+30 6973222259\u001f"

我尝试使用替换和删除功能,但我不确定我的源文件中可以包含哪些 unicode 字符。是否有任何通用方法可以删除所有这些字符

谢谢

标签: xmlunicodecharacter-encodingxquery

解决方案


XML 文档中的每个字符都是 Unicode 字符,如果有非 Unicode 字符,那么您确实会遇到问题。

您的实际问题是文档使用了 XML 解析器无法识别的 Unicode 字符编码“\u001f”。这是完全合法的 XML 内容,只是将被视为以反斜杠开头的 6 个字符的序列,而不是作为控制字符 x1F 的表示(碰巧不是 XML 1.0 允许的字符) .

处理这些字符的一种方法是将“+30 6973222259\u001f”视为 JSON 字符串并使用 XQuery 3.1 函数json-to-xml()将其转换为 XML(它需要包含引号)。但是,如果有转义序列转换为 XML 不允许的字符,这会给您带来问题,例如\u0000. 该json-to-xml()函数具有处理此类情况的各种选项。


推荐阅读