오래된 거래 파일의 EUC-KR과 UTF-8 인코딩을 구분하기
발행
거래 CSV의 숫자는 멀쩡한데 한글 주소만 깨졌다면 열 구분자 문제와 인코딩 문제를 나누어 보아야 한다. 인코딩은 파일의 바이트를 어떤 문자로 해석하는지에 관한 방식이다. 글꼴을 바꾸는 것만으로 원본 해석 오류가 해결되는 것은 아니다.
깨진 표시를 새 파일로 덮어쓰지 않는다
먼저 원본 파일을 복사해 보존한다. 제공기관의 파일 설명이나 내려받기 옵션에서 문자 인코딩을 확인한다. Power Query의 Csv.Document에는 Encoding 옵션이 있고 기본값은 UTF-8에 해당하는 65001로 설명된다. 그렇다고 오래된 모든 국내 파일이 EUC-KR이고 새 파일은 전부 UTF-8이라고 단정할 수는 없다. 파일 명세와 실제 미리보기를 함께 확인해야 한다.
같은 바이트를 다른 방식으로 미리 본다
가상의 파일에서 주소가 정상인지 확인할 때 기관명·도로명처럼 원래 문자를 알고 있는 여러 행을 표본으로 고른다. 가져오기 설정의 파일 원본·인코딩을 바꾸어 보고 주소와 메모가 함께 읽히는지 비교한다. Python 공식 코덱 표에도 euc_kr, cp949, utf_8이 각각 나열되어 있으므로 ‘한국어 파일’이라는 이유로 한 종류라고 정하지 않는다. 명세가 불명확하면 제공기관에 확인하고, 한두 글자가 그럴듯하게 보인다고 전체가 복구된 것으로 처리하지 않는다. 쉼표 때문에 열이 밀리는 현상은 별도의 CSV 인용문자 규칙 문제일 수 있으므로 한 번에 같은 원인으로 묶지 않는다.
이미 손실된 문자는 다시 원본을 받는다
잘못 읽은 내용을 물음표 같은 대체문자로 저장했다면 원래 정보가 소실됐을 수 있다. 예를 들어 Python의 replace 오류처리는 인코딩 오류를 물음표로, 디코딩 오류를 대체문자로 바꾸므로 이 문자를 저장한 사본만으로 원문을 역산하지 않는다. 이 경우 파일 이름이나 글꼴을 바꾸어도 원래 주소를 확정할 수 없다. 원본을 다시 내려받거나 제공기관에 문의한다. 최종 저장본에는 확인한 인코딩, 구분자와 원본 수령일을 기록하고 다시 열어 표본을 대조한다. 주소를 기억이나 검색 결과로 임의 복원하면 다른 거래와 연결될 수 있으므로 검증되지 않은 수정을 하지 않는다. 파일이 열렸다는 사실과 문자가 정확히 해석됐다는 사실을 별도로 확인하는 것이 핵심이다.
출처와 확인일
- Microsoft Power Query Csv.Document — 확인일 2026-10-16
- Python codecs 인코딩·오류처리 — 확인일 2026-10-16