본문으로 바로가기

[스프링] HTML 특수문자 JSON 데이터 파싱문제 발생

category SPRING/스프링 2021. 11. 15. 01:34
728x90
반응형
SMALL
"단어" : "단어"

현재 나는 특정 API를 이용하고있어서 서버에서 DB데이터를 JSON 형태로 뿌려줘야한다,

그러나 VIEW 단에서 JSON 형식으로 데이터를 작성해서 DB에 등록시켜준다.

그리고 저장된 DB내용을 VIEW에 뿌려줄때 서버에서 JSON 형식으로 변환하는 과정을 거치게 된다.

그런데 DB에 저장된 내용은 "단어":"단어" 이다 보니 JSOB 변환 과정에서 깨져?버리는 문제가 발생 하였다.

이는 HTML의 데이터 입력과정에서 특수문자 처리를 안해줬기 때문에 발생한 문제라고 생각한다.

 

아래의 특수문자들을 숫자표현 또는 문자표현 방식으로 변환하여 DB에 저장하는 방법이 필요할꺼같다.

1.view 처리할때

view에서 서버에 던질때

StringEscapeUtils.unescapeHtml("디코딩필요한 엔티티문자") 

해당 함수를 사용하여 처리할수가 있다고 하는데...

2.서버에서 처리할때

view에서 받은 내용을 서버에서 db에 저장할때

String input = "서버에서받은 특수문자 포함된데이터";
String convert = org.springframework.web.util.HtmlUtils.htmlEscape(input);

해당 방식으로 받아서 DTO 타입에 맞게 넣어보자.. 해결 한뒤 추가 작성하자..

 

HTML 상에서 특수문자가 제대로 나타나지 않을 수 있기 때문에 아래 문자들를 사용합니다.
표현문자 숫자표현 문자표현 설명
- �- - 사용하지 않음
space 	 - 수평탭
space 
 - 줄 삽입
- - - 사용하지 않음
space   - 여백
! ! - 느낌표
" " " 따옴표
# # - 숫자기호
$ $ - 달러
% % - 백분율 기호
& & & Ampersand
' ' - 작은 따옴표
( ( - 왼쪽 괄호
) ) - 오른쪽 괄호
* * - 아스트릭
+ + - 더하기 기호
, , - 쉼표
- - - Hyphen
. . - 마침표
/ / - Solidus (slash)
0 - 9 0-9 - 0부터 9까지
: : - 콜론
; &#59; - 세미콜론
< &#60; &lt; 보다 작은
= &#61; - 등호
> &#62; &gt; 보다 큰
? &#63; - 물음표
@ &#64; - Commercial at
A - Z &#65;-&#90; - A부터 Z까지
[ &#91; - 왼쪽 대괄호
\ &#92; - 역슬래쉬
] &#93; - 오른쪽 대괄호
^ &#94; - 탈자부호
_ &#95; - 수평선
` &#96; - Acute accent
a - z &#97;-&#122; - a부터 z까지
{ &#123; - 왼쪽 중괄호
| &#124; - 수직선
} &#125; - 오른쪽 중괄호
~ &#126; - 꼬리표
- &#127;-&#159; - 사용하지 않음
  &#160; &nbsp; Non-breaking space
¡ &#161; &iexcl; 거꾸로된 느낌표
&#162; &cent; 센트 기호
&#163; &pound; 파운드
¤ &#164; &curren; 현재 환율
&#165; &yen;
| &#166; &brvbar; 끊어진 수직선
§ &#167; &sect; 섹션 기호
¨ &#168; &uml; 움라우트
&#169; &copy; 저작권
ª &#170; &ordf; Feminine ordinal
&#171; &laquo; 왼쪽 꺾인 괄호
&#172; &not; 부정
­ &#173; &shy; Soft hyphen
? &#174; &reg; 등록상표
&hibar; &#175; &macr; Macron accent
° &#176; &deg; Degree sign
± &#177; &plusmn; Plus or minus
² &#178; &sup2; Superscript two
³ &#179; &sup3; Superscript three
´ &#180; &acute; Acute accent
μ &#181; &micro; Micro sign (Mu)
&#182; &para; 문단기호
· &#183; &middot; Middle dot
¸ &#184; &cedil; Cedilla
¹ &#185; &sup1; Superscript one
º &#186; &ordm; Masculine ordinal
&#187; &raquo; 오른쪽 꺾인 괄호
¼ &#188; &frac14; 4분의 1
½ &#189; &frac12; 2분의 1
¾ &#190; &frac34; 4분의 3
¿ &#191; &iquest; 거꾸로된 물음표
A &#192; &Agrave; Capital A, grave accent
A &#193; &Aacute; Capital A, acute accent
A &#194; &Acirc; Capital A, circumflex accent
A &#195; &Atilde; Capital A, tilde
A &#196; &Auml; Capital A, dieresis or umlaut mark
A &#197; &Aring; Capital A, ring (Angstrom)
Æ &#198; &AElig; Capital AE diphthong (ligature)
C &#199; &Ccedil; Capital C, cedilla
E &#200; &Egrave; Capital E, grave accent
E &#201; &Eacute; Capital E, acute accent
E &#202; &Ecirc; Capital E, circumflex accent
E &#203; &Euml; Capital E, dieresis or umlaut mark
I &#204; &Igrave; Capital I, grave accent
I &#205; &Iacute; Capital I, acute accent
I &#206; &Icirc; Capital I, circumflex accent
I &#207; &Iuml; Capital I, dieresis or umlaut mark
Ð &#208; &ETH; Capital Eth, Icelandic
N &#209; &Ntilde; Capital N, tilde
O &#210; &Ograve; Capital O, grave accent
O &#211; &Oacute; Capital O, acute accent
O &#212; &Ocirc; Capital O, circumflex accent
O &#213; &Otilde; Capital O, tilde
O &#214; &Ouml; Capital O, dieresis or umlaut mark
× &#215; &times; Multiply sign
Ø &#216; &Oslash; width="130"Capital O, slash
U &#217; &Ugrave; Capital U, grave accent
U &#218; &Uacute; Capital U, acute accent
U &#219; &Ucirc; Capital U, circumflex accent
U &#220; &Uuml; Capital U, dieresis or umlaut mark
Y &#221; &Yacute; Capital Y, acute accent
Þ &#222; &THORN; Capital Thorn, Icelandic
ß &#223; &szlig; Small sharp s, German (sz ligature)
a &#224; &agrave; Small a, grave accent
a &#225; &aacute; Small a, acute accent
a &#226; &acirc; Small a, circumflex accent
a &#227; &atilde; Small a, tilde
a &#228; &auml; Small a, dieresis or umlaut mark
a &#229; &aring; Small a, ring
æ &#230; &aelig; Small ae diphthong (ligature)
c &#231; &ccedil; Small c, cedilla
e &#232; &egrave; Small e, grave accent
e &#233; &eacute; Small e, acute accent
e &#234; &ecirc; Small e, circumflex accent
e &#235; &euml; Small e, dieresis or umlaut mark
i &#236; &igrave; Small i, grave accent
i &#237; &iacute; Small i, acute accent
i &#238; &icirc; Small i, circumflex accent
i &#239; &iuml; Small i, dieresis or umlaut mark
ð &#240; &eth; Small eth, Icelandic
n &#241; &ntilde; Small n, tilde
o &#242; &ograve; Small o, grave accent
o &#243; &oacute; Small o, acute accent
o &#244; &ocirc; Small o, circumflex accent
o &#245; &otilde; Small o, tilde
o &#246; &ouml; Small o, dieresis or umlaut mark
÷ &#247; &divide; Division sign
ø &#248; &oslash; Small o, slash
u &#249; &ugrave; Small u, grave accent
u &#250; &uacute; Small u, acute accent
u &#251; &ucirc; Small u, circumflex accent
u &#252; &uuml; Small u, dieresis or umlaut mark
y &#253; &yacute; Small y, acute accent
þ &#254; &thorn; Small thorn, Icelandic
y &#255; &yuml; Small y, dieresis or umlaut mark

출처:http://kor.pe.kr/util/4/charmap2.htm

728x90
반응형
LIST

'SPRING > 스프링' 카테고리의 다른 글

log4j2 설정 기록  (0) 2022.03.04
정리  (0) 2022.03.03
스프링 mapper vs dao 차이  (0) 2021.11.09
ajax  (0) 2021.09.10
[스프링]25. LIST<Map<String,Object>> 스크립트 JSON으로 파싱하기  (0) 2021.08.29