오라클에서 데이터를 읽어와서 글자수를 센 후 그 단어 수를 세팅해서 엑셀로 내보내려고
xlsxwriter 를 사용해서 엑셀 내보내기를 했다.
시키는대로 했지만 오류가 뙇..!!!!!!!!
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 52: invalid start byte
라는 에러가 나왔다.... 검색을 해보니 ascii코드관련 에러인데
이것과 관련된 것같다.
그래서 우선 엑셀을 쓰기위해서
import sys
reload(sys)
sys.setdefaultencoding('Cp1252')
위와같은세팅을 해줬더니 파일은 써졌는데...
Representative’ ->Representative¡¯
이렇게 깨져서 나왔다.
우선 오늘은 엑셀아웃풋까지 했으니까 인코딩문제는 다시 한번 체크 해봐야겠다.
근데 위와같은 엑셀 아웃풋 문제는 토드 9버전에서도 발견되었다. 물론 에러메시지가 한정적이라서 정확히 이 에러인지는 알 수 없지만
내가 사용중인 12버전에서는 에러가 나지않고 정상적으로 엑셀다운로드가 되는 것을 보면 해당 문제일 가능성이 크다.
그래서 해당 관련 자료를 찾아보니 해결방법이 있었다.
우선은 첫번째로
import os
os.environ["NLS_LANG"] = ".AL32UTF8" #한글 UTF-8설정 CP949의 경우 .KO16MSWIN949
[참조] https://haandol.wordpress.com/2014/06/25/cx_oracle-insert-unicode/
두번째로는
import sys
reload(sys)
sys.setdefaultencoding('utf8')
아래 처럼 세팅 하는 것이다.
이렇게 하면 python에서 ascii가 깨지는 오류를 잡을 수 있다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python]UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 0: ordinal not in range(128) (0) | 2017.10.17 |
---|---|
[Python] SyntaxError: Non-ASCII character '\xeb' in file test.py on line 5, but no encoding declared; (0) | 2017.10.17 |
[Python]tuple 값변경 (0) | 2017.10.13 |
[Python]nltk 설치 (0) | 2017.10.12 |
[Python]Oracle DB연동 (0) | 2017.10.12 |