为什么我不能使用 org.apache.commons.lang.StringEscapeUtils 将包含字符的字符串转换为 ' 和 è?



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

我的代码中有以下情况:

String notNormalized = "c'è";
System.out.println("NOT NORMALIZED: " + notNormalized);
System.out.println("NORMALIZED: " + StringEscapeUtils.escapeJava(notNormalized));

因此,首先我声明了notNormalized字段,该字段(至少在我的脑海中)必须表示一个未规范化的字符串,该字符串包含由'和由&egrave表示的带有重音的元音(应该是è字符)

然后我尝试在没有规范化的情况下打印它,我特别注意的是打印c'egrave字符串及其规范化版本,我希望检索c'è规范化\转换的字符串。

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

NOT NORMALIZED: c'è
NORMALIZED: c'è

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

您要做的是unescapeHtml4

所以

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

它打印

NORMALIZED: c'è

不幸的是,&apos不是HTML4实体,因此无法使用此工具取消映射。您可以将unescapeXml用于&apos,但不能用于&egrave。你必须混合搭配。

相关内容

最新更新