문서유형ㅣ장애해결
분야ㅣ관리/환경설정
적용제품버전ㅣ6FS07, 6FS07PS
문서번호ㅣTADTS007
현상
Tibero Client를 통해 DB에 접속하거나 SQL 스크립트를 실행하는 과정에서 한글이 깨지는 현상이 발생할 수 있습니다. 인코딩 문제 발생 시 확인이 필요한 사항과 조치 방안에 대하여 안내 합니다.
원인
한글이 깨질 경우 원인 및 확인 사항
1. DB Character Set
2. Terminal encoding
3. TB_NLS_LANG
4. 스크립트 파일의 encoding
참고DB가MSWIN949라면 스크립트를 euc-kr로 지정합니다. (MSWIN949와 동일하게 한글을 2바이트로 처리)
해결
DB CharacterSet 확인
데이터 베이스의 캐릭터 셋을 확인합니다. (NLS_CHARACTERSET)
$ tbsql sys/tibero SQL> SELECT * FROM DATABASE_PROPERTIES WHERE NAME LIKE '%NLS%'; NAME VALUE COMMENT_ST ------------------------- ---------- ---------- NLS_CHARACTERSET UTF8 NLS_NCHAR_CHARACTERSET UTF16 2 rows selected.
Terminal encoding 확인
DB CharacterSet과 접속한 Terminal encoding이 다를 경우 한글 깨짐 현상이 발생합니다.
DB | TERMINAL | 출력 내용 |
|---|---|---|
MSWIN949 | UTF8 | 한글 깨짐 |
MSWIN949 | EUC-KR or use font encoding | 정상적으로 한글 출력 |
TB_NLS_LANG 환경 변수 설정 (tbdsn.tbr )
- DB CharacterSet과 Terminal encoding를 맞추기 어렵다면 tbdsn.tbr 파일에 TB_NLS_LANG 로 인코딩을 지정합니다.
- 접속한 Terminal encoding을 TB_NLS_LANG로 설정하여 DB에게 사용 중인 터미널의 인코딩 정보를 전송합니다.
DB | TERMINAL | TB_NLS_LANG | 출력 내용 |
|---|---|---|---|
MSWIN949 | UTF8 | UTF8 | 정상적으로 한글 출력 |
스크립트 파일의 encoding 확인
insert할 스크립트의 파일 인코딩을 확인합니다.
1) vi 편집기에 한글이 깨질 경우
case 1. vi 편집기 들어간 후 ESC > :set encoding=utf=8 입력 후 사용
case 2. 또는 설정을 변경합니다.
$ vi /etc/vimrc set encoding=utf-8 set fileencodings=utf-8,cp949
2) insert할 스크립트 파일의 인코딩 변경
f: 기존 인코딩- 현재 인코딩 확인
$ file tmaxkorean.sql
tmaxkorean.sql: UTF-8 Unicode text
- 인코딩 종류 확인
$ iconv -l | grep {인코딩종류}
- 인코딩변환
$ iconv -f {기존인코딩} -t {변경인코딩} tmaxkorean.sql > t.sql
$ iconv -f utf-8 -t EUCKR tmaxkorean.sql > t.sql