cx_Oracle을 사용하다보면, utf-8로 인코딩된 데이터들을 table에 insert하면 모조리 ???로 바뀌는 상황이 발생한다.
cx_Oracle의 encoding이 US-ASCII 로 잡혀있기 때문이다.
다음 코드로 encoding을 확인할 수 있다.

import cx_Oracle
conn = cx_Oracle.connect('test/test@TYPED')
conn.encoding

US-ASCII 일 경우, 다음 처럼 NLS을 설정하면 쉽게 해결된다.

import os
os.environ['NLS_LANG'] = '.UTF8'

import cx_Oracle
conn = cx_Oracle.connect('test/test@TYPED')
conn.encoding
Posted by xHuro
,