※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!
ο 목차
1. 문제 사례
파이썬 코드로 파일 내용을 읽어오던 중 UnicodeDecodeError 발생
2. 오류 메세지 내용 상세
UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 6: illegal multibyte sequence
3. 문제 원인
1) 한글이 포함된 파일
윈도우와 리눅스에서 주로 사용하는 인코딩 방식인 'cp949'와 'utf-8'은 파일에 한글을 저장하는 방식이 다름.
- cp949 : 한글 하나당 2바이트로 저장
- utf-8 : 한글의 초성, 중성, 종성 각각을 1바이트로 저장
2) 윈도우 운영체제
윈도우는 텍스트 파일 저장 기본 동작에 'cp949' 인코딩을 사용.
반대로 파이썬의 텍스트 파일 작업 기본 동작은 'utf-8' 인코딩을 사용.
※ 종합하면 윈도우에서 'cp949'로 인코딩된 텍스트 파일에 한글이 포함되어 있는 경우
-> 'cp949' 인코딩 파일을 파이썬이 'utf-8' 방식으로 읽어오기 때문에 UnicodeDecodeError 발생한다는 것을 알 수 있음.
4. 문제 해결 방법
1) 파일 인코딩 방식을 'utf-8'로 지정
with open('items.txt','r',encoding='utf-8') as f :
- 기존 인코딩을 utf-8로 덮은 다음 파이썬에서 utf-8로 파일을 읽어오기 때문에 오류 없이 작업 가능함
2) 파이썬 코드에 한글 사용 지양
부득이한 경우가 아니라면 저는 파이썬 코드에 한글을 잘 사용하지 않습니다. 인코딩 방식 신경 쓰는게 은근 귀찮고, 예상치 못하게 오류가 나면 트러블슈팅 하는 것도 아까운 시간을 잡아먹는 일이라서요. 꼭 필요하다면 어쩔 수 없지만 꼭 써야 하는 경우가 아니라면 영어만 사용하는게 좀 더 깔끔합니다.
내용이 도움이 되길 바랍니다.
※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다.
'파이썬 개발 > 트러블슈팅' 카테고리의 다른 글
Error: Unable to extract uploader id 해결하기(youtube_dl) (0) | 2023.03.12 |
---|---|
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. (2) | 2022.04.05 |
AttributeError: 'int' object has no attribute 'replace' (0) | 2021.09.24 |
SyntaxError: invalid syntax 해결방법 (0) | 2021.09.13 |
TabError: inconsistent use of tabs and spaces in indentation (0) | 2021.09.10 |
댓글