Почему я не могу использовать org.apache.commons.lang.StringEscapeUtils для преобразования этой строки, содержащей символ, в &apos и & egrave?

Я пытаюсь провести эксперимент с классом 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?

1 ответ

То, что вы хотите сделать, это unescapeHtml4,

Так

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

который печатает

NORMALIZED: c'è

К несчастью, &apos не является сущностью HTML 4 и поэтому не может быть удален с помощью этого инструмента. Ты можешь использовать unescapeXml для &apos но не для &egrave, Вам придется смешивать и сочетать.

Другие вопросы по тегам