More

java에서 쌍따옴표가 들어간 문자열을 DB에 저장하고 웹 화면에 출력하기

사내에서 발주서 내역 기타사항을 입력하는 란에 일부 회사명을 강조하기 위해 쌍따옴표를 넣었더니 쌍따옴표 뒤 내용이 다 사라진채로 저장된다는 이슈가 있었습니다. 

확인해보니 DB에 들어갈 때 쌍따옴표가 치환되지 않고 그대로 들어가 쌍따옴표 들어간 부분부터 뒷부분까지 다 사라지고 저장되있네요.


1. 특수문자의 이스케이프 시퀀스 확인

다른 특수문자는 문제가 안되는데 큰따옴표, 작은따옴표는 오라클에서 쿼리문을 작성할 때 문제가 되기 때문에 이스케이프 시퀀스를 보고 문자열을 치환해줘야 합니다.

시퀀스 특수문자
\' 작은따옴표(홑따옴표)
\" 큰따옴표(쌍따옴표)


이스케이프-시퀀스표

이스케이프 시퀀스 표


2. java에서 치환하기

java에서 치환하고 오라클에 저장한 후 웹 화면에 다시 불러와야 하기 때문에 replaceAll을 이용해 문자열에 있는 쌍따옴표를 HTML 문자 엔티티 " 로 치환해서 넣어줬습니다.

원본 내용 : 기타사항 입력 "회사명" 확인해주세요

test.replaceAll("\"","""); 


치환 후 내용 : 기타사항 입력 "회사명" 확인해주세요.

이렇게 치환 후 DB에 저장해주면 다시 가져와 보여줄때 원본 입력 내용대로 보여주게 됩니다.