웹에서 문자열로 받은 쿼리문을 java로 처리하는 과정에 개행문자 및 특수문자가 html 엔티티로 변경(escape)되어 저장되는 문제가 발생했다.
Escape란?
& nbsp;(공백)나 & lt;(<) 또는 & gt;(>)처럼 특정 문자를 HTML로 변환하는 행위를 Escape(이스케이프)한다고 말한다.
본래 서비스단에서 html엔티티로 변경되는 이유는 보안적인 이슈(xss) 때문에 변경되게 설정되어있다고 한다.
그래서 사용하게 된게 unescapeHtml!
따로 라이브러리를 추가하지 않아도 org.apache.commons.text 패키지안에 String 관련 처리 클래스들이 있어 사용해보았다.
String text = StringEscapeUtils.unescapeHtml3((String)ListMap.get("text"));
unescapeHtml3 파라미터로 웹에서 받아온 String 값만 넣어주면 escape된 HTML값을 unescape해준다.
추가로 replaceAll(대체대상, 대체문자)을 사용해 이를 처리할 수도 있는데 대체 문자열로 이스케이프 코드를 참고하자(아래 링크 첨부)