Проблема с Java StringEscapeUtils.escapeHtml4()

Я пытаюсь избежать строкового объекта в своем приложении Java, используя StringEscapeUtils.escapeHtml4. Я использую библиотеку commons-lang3-3.5.jar.

Ниже приведен формат, который я пытаюсь сделать -

StringEscapeUtils.escapeHtml4("user001")

Когда я печатаю в консоли, вывод выглядит так: "user001"

На самом деле я не хочу, чтобы моя двойная кавычка была преобразована в escape-символы здесь. Потому что после экранирования строки моя программа не распознает ее как допустимую строку, и я получаю искаженный JSon. Есть ли способ справиться с этим или лучше? Заранее спасибо.


person Rashmi Ranjan mallick    schedule 27.02.2017    source источник
comment
Почему вы экранируете HTML, если используете его в JSON? Экранирование HTML предназначено для использования строки в HTML.   -  person RealSkeptic    schedule 27.02.2017
comment
Мне не удалось воспроизвести вашу проблему, используя версию 3.5 файла commons-lang3. Не могли бы вы поделиться с нами более подробной информацией, пожалуйста?   -  person SaWo    schedule 27.02.2017
comment
escapeHTML4 отлично работает для меня и не печатает кавычки, если строка не "\"user001\""   -  person Magnus    schedule 27.02.2017


Ответы (2)


Почему бы вам не использовать escapeJava() вместо escapeHtml4().

escapeJava(String input)
Экранирует символы в строке, используя правила Java String.

Он не преобразует ваши двойные кавычки в ", а просто избежит использования обратной косой черты (что приемлемо в JSON).


Вы также можете проверить

escapeJson
public static final String escapeJson(String input)

Экранирует символы в строке, используя правила Json String.

Экранирует любые значения, которые он находит, в их форму Json String. Правильно работает с кавычками и контрольными символами (табуляция, обратная косая черта, cr, ff и т. д.)

person Raman Sahasi    schedule 27.02.2017
comment
@Раман-Спасибо. Я хочу предотвратить возможность внедрения скрипта внутри моего ввода JSon. Что я должен использовать в этом: escapeJava() или escapeJson()? - person Rashmi Ranjan mallick; 27.02.2017
comment
@RashmiRanjanmallick они оба почти похожи, с той лишь разницей, что в Json экранируется косая черта (/). Вы можете использовать любой из них, однако, если вы собираетесь использовать его с каким-либо парсером JSON, то лучше использовать метод escapeJson(). - person Raman Sahasi; 27.02.2017

Проблема не в StringEscapeUtils.escapeHtml4(). Проблема может заключаться в том, что вы пытаетесь использовать обычную строку, а ваш код ожидает JSON.

person SaWo    schedule 27.02.2017
comment
Спасибо. Я хочу предотвратить возможность внедрения скрипта внутри моего ввода JSon. Поможет ли мне escapeJson()? - person Rashmi Ranjan mallick; 27.02.2017
comment
Не могли бы вы поделиться с нами дополнительной информацией, пожалуйста? Меня интересует часть, которая использует результат метода StringEscapeUtils.escapeHtml4(user001). - person SaWo; 27.02.2017