본문 바로가기
WEB/Java

StringEscapeUtils

by 노랑파랑 2023. 2. 23.
반응형

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