반응형
StringEscapeUtils
HTML 문자 escape 할때 사용
sql을 사용해서 필터와 같은 기능을 구현하는 와중에 웹 브라우저에서 서버로 보내는 파라미터 중 특수문자가 인코딩(Encoding)되어 기능 구현에 문제가 생겼다.
예를들면, 나&너라는 값을 가지고 있는 데이터를 조회하려는데 서버에서 받은 파라미터 값을 보니 나&apm;너 와 같이 인코딩 되있었다.
해서 StringEscapeUtils 클래스를 사용해 디코딩을 하여 해결!
- escape(encode)
- 사람이 인지하는 문자를 규칙에 따라 컴퓨터가 이해할 수 있는 언어(0,1)로 이루어진 코드로 변환하는것 을 통틀어 지칭함. 즉 정해진 규칙에 따라 코드화, 암호화, 부호화 함
- unescape(decode) :
- escape/encode 된 문자를 원래 문자로 되돌려 놓는것
&의 경우 unescapeHtml 로 디코딩되었으나 ' (작은따옴표, ')의 경우엔 디코딩 되지 않아서,
(내가 사용한 클래스 : org.apache.commons.lang.StringEscapeUtils, lang3의 경우 확인 필요)
' (')의 경우엔 unescapeXml로 디코딩 되어 결국 2번 디코딩하게 되었다.
StringEscapeUtils.unescapeHtml(StringEscapeUtils.unescapeXml(object.getParam())
확인해보니 아래와 같았음.
unescapeHtml(String str) | escape된 HTML 엔티티 값을 unescape. HTML 4.0 엔터티를 지원합니다. |
unescapeXml(String str) | escape된 XML 엔티티 값을 unescape. 5개의 기본 XML 엔티티(gt, lt, quot, amp, apos)만 지원합니다. DTD 또는 외부 엔터티를 지원하지 않습니다. |
반응형
'WEB > Java' 카테고리의 다른 글
[Junit] MockMvc에서 session 사용하기 (0) | 2023.04.18 |
---|---|
Scanner, BufferedReader (0) | 2017.01.31 |
Spring Framework : DI (0) | 2017.01.03 |
Spring Framework : 개념 (0) | 2017.01.03 |
String (0) | 2017.01.03 |