XML 转义忽略重音字符
XML Escaping ignores accentuated characters
我正在尝试发送 POST 请求,其中请求正文包含 XML。
接收 API 要求任何特殊字符都应使用数字 xml 实体进行编码。
让我们举个例子:
İlkay Gündoğan
在xml-使用org.apache.commons.text.StringEscapeUtils
等标准库转义或使用XML-Parser Jsoup
之后,它只会产生:
İlkay Gündoğan
,但忽略了 İ
和 ğ
。我已经阅读了那些提到的库的文档,并读到只有一定范围的字符被转义。
- 为什么这些库只转换特定范围?
- 有没有 jvm 的库,它支持转义重音字符,如
İ
和 ğ
。
我已经尝试将手动制作的示例 (İlkay Gündoğan
) 发送到 recv。 API 并且按预期工作。
所有值都以 UTF-8 写入和读取。
如果 XML 编码为 UTF-8(默认),则不需要将特殊字符转换为数字实体。所以你有一个可疑的接收者。 escapeXml11 确实像 javadocs 所说的那样受到限制。
翻译 String xml
的所有非 ASCII 字符:
xml = xml.codePoints()
.map(cp -> cp < 128 ? Character.toString(cp) : String.format("&#%d;", cp))
.collect(Collectors.joining());
您甚至可以设置 encoding="US-ASCII"
。
我正在尝试发送 POST 请求,其中请求正文包含 XML。 接收 API 要求任何特殊字符都应使用数字 xml 实体进行编码。
让我们举个例子:
İlkay Gündoğan
在xml-使用org.apache.commons.text.StringEscapeUtils
等标准库转义或使用XML-Parser Jsoup
之后,它只会产生:
İlkay Gündoğan
,但忽略了 İ
和 ğ
。我已经阅读了那些提到的库的文档,并读到只有一定范围的字符被转义。
- 为什么这些库只转换特定范围?
- 有没有 jvm 的库,它支持转义重音字符,如
İ
和ğ
。
我已经尝试将手动制作的示例 (İlkay Gündoğan
) 发送到 recv。 API 并且按预期工作。
所有值都以 UTF-8 写入和读取。
如果 XML 编码为 UTF-8(默认),则不需要将特殊字符转换为数字实体。所以你有一个可疑的接收者。 escapeXml11 确实像 javadocs 所说的那样受到限制。
翻译 String xml
的所有非 ASCII 字符:
xml = xml.codePoints()
.map(cp -> cp < 128 ? Character.toString(cp) : String.format("&#%d;", cp))
.collect(Collectors.joining());
您甚至可以设置 encoding="US-ASCII"
。