Почему я не могу использовать 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
но не для è
, Вам придется смешивать и сочетать.