2

单元测试显示 StringEscapeUtils.escapeHtml/escapeHtml4 不会产生相同的结果。

尝试将 commons-lang(2.6) 升级到 commons-lang3(3.9) 并在 escapeHtml/escapeHtml4 方法中发现奇偶校验不匹配。

for (String s : Stream.generate(()-> RandomStringUtils.random(100)).limit(100).toArray(String[]::new)) {
    String oldVersion =
        org.apache.commons.lang.StringEscapeUtils.escapeHtml(s);

    String newVersion =
        org.apache.commons.lang3.StringEscapeUtils.escapeHtml4(s);

    Assertions.assertEquals(oldVersion, newVersion);
}

我本来希望 commons-lang3 StringEscapeUtils.escapeHtml4() 产生与 commons-lang StringEscapeUtils.escapeHtml() 相同的结果。当然,这个测试是在整个 unicode 范围内,但仍然......

org.opentest4j.AssertionFailedError: 
Expected :靂ᬧ뒼뽼㞛⼁寺ǐ弬澳��ﮒᜑ揢䈤ꮚ耳ᣛ泐䪶��늁㠌鋊劂荃❊��단ꂎ櫼㔀䯼絹䲼뎱뽚템☉钆쪄൒䷗㪨��鑺巉Ὄ䱒헓꧿㡕퟼㦰▬䟀⨈ꕓ⇊삗Շ㘵ᐟ蚳��➺컏풎쬴徊풫ᶒ咼芸ᘞ记ᣎἪ꣏陘ґ耚䂊녊ᵙ雜
Actual   :靂ᬧ뒼뽼㞛⼁寺ǐ弬澳ﮒᜑ揢䈤ꮚ耳ᣛ泐䪶늁㠌鋊劂荃❊단ꂎ櫼㔀䯼絹䲼뎱뽚템☉钆쪄൒䷗㪨鑺巉Ὄ䱒헓꧿㡕퟼㦰▬䟀⨈ꕓ⇊삗Շ㘵ᐟ蚳➺컏풎쬴徊풫ᶒ咼芸ᘞ记ᣎἪ꣏陘ґ耚䂊녊ᵙ雜

这些字符不再在 HTML4 中转义了吗?这不取决于您的编码吗?有没有办法强制 commons-lang3 在这方面表现得像 commons-lang?

4

0 回答 0