본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
카테고리 없음

[Spring] 특수문자 변환 (html tag)

by 미노드 2023. 6. 8.

html tag를 데이터베이스에 저장하기위해 특수문자를 변환해야 하는 경우가 발생합니다. 

DB에 저장을 했으니 웹 페이지에 뿌릴때는 반대의 작업을 해야 하는데(DB에서 가져온 후 변환해서 웹 페이지 출력)
이때 Spring을 사용한다면 특별히 라이브러리를 설치하지 않고도 변환이 가능합니다.

예제를 살펴 보면 레스 댄 < 모어 댄>

특수문자 처리시 escape와 unescape를 사용해서 저장할 수 있습니다.
특히 에디터 같은걸로 꾸며진 데이터, 내용을 저장할 필요가 있을 때 유용합니다.

import org.springframework.web.util.HtmlUtils;
 
        String tag ="<HTML> <table><tr><div> &";
        String esc = HtmlUtils.htmlEscape(tag);
        String uesc = HtmlUtils.htmlUnescape(esc);
 
        System.out.println("escape : " + esc);
        System.out.println("uescape : " + uesc);

 이렇게 "<HTML> <table><tr><div> &” HTML 문서가 있는 경우 htmlEscape  htmlUnescape 함수를 이용하면
결과는 다음처럼 나옵니다.

만약 일반적인 특수 기호나 숫자, 알파벳을 변환하려고 하면 어떻게 될까요?
변환되지 않습니다. < 와 > 만 변환됩니다.

        String sTag = "( ) \\ [ ] { } ! @ $ % ^ * 1 2 3 A B C";
        String sEsc = HtmlUtils.htmlEscape(sTag);
        String sUesc = HtmlUtils.htmlUnescape(sEsc);
       
        System.out.println("escape : " + sEsc);
        System.out.println("uescape : " + sUesc);

 그럼 escape 문자를 변환하면어떻게 될까요?
변환이 잘됩니다.
데이터를 저장할 때 html 숫자코드로 저장하는것이 유용해 보입니다.

String nTag = "&#40; &#41; &#92; &#91; &#93; &#123; &#125; &#49; &#50; &#65; &#66; ";
String nUesc = HtmlUtils.htmlUnescape(nTag);
              
System.out.println("escape : " + nUesc);