【问题标题】:Why I can't use the org.apache.commons.lang.StringEscapeUtils to convert this String containing character as &apos and &egrave?为什么我不能使用 org.apache.commons.lang.StringEscapeUtils 将此包含字符的字符串转换为 &apos 和 &egrave?
【发布时间】:2015-03-17 17:15:09
【问题描述】:

我正在尝试对 org.apache.commons.lang.StringEscapeUtils 类进行一些实验,但我发现了一些困难。

我的代码中有以下情况:

String notNormalized = "c'è";

System.out.println("NOT NORMALIZED: " + notNormalized);
System.out.println("NORMALIZED: " + StringEscapeUtils.escapeJava(notNormalized));

所以首先我声明了 notNormalized 字段(至少在我的脑海中)必须表示一个未规范化的字符串,其中包含由 表示的 撇号 字符>' 和一个由 è 表示的重读元音(应该是 è 字符)

然后我尝试在不进行规范化的情况下打印它,我认为这是打印 c'è 字符串及其规范化版本,我希望检索 c'è标准化\转换后的字符串。

但问题是我仍然获得相同的输出,实际上这是我在控制台中获得的输出:

NOT NORMALIZED: c'è
NORMALIZED: c'è

为什么?我错过了什么?怎么了?如何执行此测试并正确转换包含字符为 &apos 的字符串?

【问题讨论】:

    标签: java string escaping stringescapeutils


    【解决方案1】:

    您要做的是unescapeHtml4

    所以

    System.out.println("NORMALIZED: " + StringEscapeUtils.unescapeHtml4(notNormalized));
    

    打印出来的

    NORMALIZED: c'è
    

    很遗憾,&apos is not an HTML 4 entity 因此无法使用此工具进行转义。您可以将unescapeXml 用于&apos,但不能用于&egrave。你必须混合搭配。

    【讨论】:

    • 它说它不识别 unescapeHtml4() 方法
    • @AndreaNobili 您必须使用旧版本的 apache commons。如果可能,升级到版本 3。
    • @AndreaNobili 版本 2 有一个 unescapeHtml 方法,但我不确定它是否混合了 HTML 3 和 4。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2019-09-19
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多