【问题标题】:Emoji character sequence �� breaks old XML processEmoji 字符序列? 打破旧的 XML 流程
【发布时间】:2019-04-01 23:59:56
【问题描述】:

我有一个旧的 Java 应用程序,它处理来自第三方数据馈送的 XML。

数据馈送允许用户输入,现在突然包含�� (????) 等表情符号。我真的很惊讶这个问题花了这么长时间才出现(表情符号已经存在了几年)。

该应用在javax.xml.parsers.DocumentBuilder.parse(InputStream) 中爆炸:

org.xml.sax.SAXParseException; lineNumber: 105; columnNumber: 3039; Character reference "&#
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)

是否有一个快速的本地化修复程序,我可以应用而无需重新设计和重新架构整个应用程序?此外,更愿意避免正则表达式搜索/替换黑客,因为这可能会引入其他微妙的问题。

【问题讨论】:

    标签: java xml unicode emoji


    【解决方案1】:

    �� 是编码为代理对(两个代理)的单个字符。 XML 中的字符引用不能表示(高或低)代理:这些不是合法字符。字符引用应代表整个 Emoji 的 Unicode 代码点,👇

    第三方向您发送了无效的 XML,您应该拒绝它,因为您会拒绝供应商提供的任何其他有缺陷的商品。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2019-10-05
    • 2019-04-30
    • 2018-11-16
    相关资源
    最近更新 更多