728x90
json은 모든 프로그램에 자주 쓰이는 형태인데요
이번엔 python에서 json파일을 읽을 때 에러가 발생하여 포스팅을 작성하게 되었습니다.
문제
json파일 읽기 시 아래와 같이 문제가 발생함
문제 코드
with open(file_path, 'r', encoding='utf-8-sig') as json_file:
json_data = json.load(json_file)
print (json_data)
에러
File "/usr/lib/python3.8/json/__init__.py", line 337, in loads
raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",
json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)
원인
해당 json은 BOM으로 디코드를 할수 없다고 나와있습니다.
오류 메세지 처럼 파일 디코드 문제입니다. BOM문자로 인한 예상치 못한 exception이 발생한것이죠
친절하게도 파일 읽을 때 BOM포함 utf-8로 디코드하면 될것 입니다.
조치
"utf-8-sig"의 "sig"는 "signature"(즉, signature utf-8 파일)의 약어입니다. utf-8-sig를 사용하여 파일을 읽으면 BOM을 파일 정보로 취급합니다
--> 에러 코드
with open(file_path, 'r', encoding='utf-8') as json_file:
--> 조치 : utf-8-sig
with open(file_path, 'r', encoding='utf-8-sig') as json_file:
json_data = json.load(json_file)
print (json_data)
참고 자료
https://stackoverflow.com/questions/57152985/what-is-the-difference-between-utf-8-and-utf-8-sig
반응형
'Programming > Python' 카테고리의 다른 글
[Python] encoding utf-8 설정하기 (0) | 2022.12.15 |
---|---|
[Python] pip 설치 시 egg_info failed with error code 1 오류 해결 (3) | 2021.05.18 |
[Python] 문자열에서 숫자만 추출 하기 2 (음수 포함) (0) | 2020.05.18 |
[Python, Error] \xef\xbb\xbf 제거 (UTF-8에서 BOM을 제거) (0) | 2019.08.12 |
[Python] 문자열에서 숫자만 추출 하기 (2) | 2019.01.10 |