본문 바로가기
  • ▒ 네모의 쉽게 배우는 네트워크 | 개발 ▒
파이썬 개발/트러블슈팅

UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 숫자 : illegal multibyte sequence 오류 해결 방법

by 너l모 2021. 9. 13.
반응형

※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :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) 파이썬 코드에 한글 사용 지양

    부득이한 경우가 아니라면 저는 파이썬 코드에 한글을 잘 사용하지 않습니다. 인코딩 방식 신경 쓰는게 은근 귀찮고, 예상치 못하게 오류가 나면 트러블슈팅 하는 것도 아까운 시간을 잡아먹는 일이라서요. 꼭 필요하다면 어쩔 수 없지만 꼭 써야 하는 경우가 아니라면 영어만 사용하는게 좀 더 깔끔합니다. 

     

    내용이 도움이 되길 바랍니다.


    ※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다. 

    반응형

    댓글