본문 바로가기

Server Oriented/Server

자바 JSP 에서 DB 에 엔터문자를 넣을 때 2바이트로 저장되는 것을 1바이트로 바꾸려면..

- 자바에서 개행(엔터) 문자는 1바이트로 인식

- 자바스크립트에서 개행(엔터)문자는 1바이트로 인식

- 오라클에서 개행(엔터) 문자는 1바이트로 인식


그런데..

java 에서 오라클에 데이타를 넣을 때,

1바이트인 개행(엔터) 문자를 DB 에 넣으면 2바이트가 된다고..

그래서 고민하고 찾아보니,

OS 에 따라 개행(엔터) 문자를 \n 이 아니라 \r\n 으로 인식하기도 한다는 것.

여기서 \n 에 해당하는 오라클 함수는 chr(10), \r 은 chr(13).

이제 어떻게 하면 될지 아셨죠..?

replace('문자열',chr(13)||chr(10),chr(10)) 으로 해 주면 된다는 거죠.

replace('문자열',chr(10)||chr(13),chr(10)) 은 2바이트가 1바이트로 변경되지 않아요.

replace('문자열',chr(10)||chr(13),chr(13)) 도 2바이트 그대로 인식 되구요.

replace('문자열',chr(13)||chr(10),chr(13)) 는 1바이트로 바뀌기는 하는데, 엔터가 아니라 공백 하나로 바뀝니다.



확인해 보려면..

select length(칼럼명),

        lengthb(칼럼명)   -- 혹시나 해서..

  from 테이블명

;


오라클이 설치된 OS 가 무엇이냐에 따라 달라질 수 있으니까,

바이트 수가 다르게 해석되는 현상이 나올 때 사용하면 됩니다.