1. DB 인코딩 설정이 실제 데이터의 인코딩을 보장하지 않는다.

2. DB 인코딩에서 벗어난 데이터가 존재할 수 있다.


======

CLOB 컬럼은 데이터를 단일 바이트 문자 스트림으로 취급한다. 때문에 값을 넣는 프로세스에 따라 현재 DB 인코딩과 다른 문자 바이트가 입력될 수 있다.


DB 설정의 인코딩이란 이 DB 안의 데이터가 항상 그 인코딩되어 있다는 의미가 아니다. CLOB 컬럼에는 내부적으로 바이트 데이터를 취급하며, 이 바이트를 어떤 규칙으로 해석해서 텍스트로 표현(표시)하느냐를 결정하는 것이 인코딩이다. 


DB 인코딩이 UTF-8 로 설정되어 있어도 UTF-8 범위를 벗어난 바이트가 데이터로 존재할 수 있고, 이 경우 데이터가 텍스트로 표시될 때는 깨진 문자나 공백 문자가 된다. 그리고 이 현상은 후에 이 데이터를 프로그램에서 읽어 처리하는 과정에서 트러블 포인트가 될 수 있다. 


한 예로, xml 전문을 데이터로 가지는 CLOB 컬럼 안에 UTF-8 을 벗어난 바이트가 포함될 경우, 사용자의 눈에는 문제 없는 xml 문서로 보이나, 이 데이터를 가지고 xml validation 을 수행하는 라이브러리나 프로그램을 사용할 경우 에러를 만나게 될 수 있다.



'기술 일반 > 일반' 카테고리의 다른 글

Kotlin] Jackson Json getter setter 사용  (0) 2022.11.24
유니코드와 UTF-8, UTF-16  (0) 2017.04.07

+ Recent posts