csv 파일을 엑셀에서 열 때 한글이 깨지는 경우

 

원본 파일은 ansi 인코딩이 아닐 확률이 높습니다. 

해당 파일을 윈도우 메모장에서 열면,

창의 가장 아래에서 인코딩 방식을 확인할 수 있습니요. 

 

"다른 이름으로 저장" 메뉴를 선택하고,

아래에 있는 파일 인코딩 설정을 "utf-8(bom)" 형식으로 변경하여 저장합니다. 

 

[참고] utf-8(bom) ?

utf-8은 파일에 인코딩 정보가 없지만,

utf-8(bom)은 파일 헤더에 인코딩 정보를 알려준다는 점에서 차이가 있습니다.

 

 

아래 파이썬 코드는 utf-8로 저장된 파일을 읽어서 utf-8 BOM 형식으로 저장합니다.

import csv

# 입력 파일 이름과 출력 파일 이름 설정
input_filename = 'a.csv'  # utf-8 형식 
output_filename = 'a_utf8bom.csv' # utf-8bom 형식(파일 선두에 태그 있음)

try:
    # a.csv 열기 (원본 파일의 인코딩 방식 지정)
    # 원본 인코딩 예: cp949, utf-8(utf8), euc-kr
    # 윈도우즈 경우 encoding 기본 추정 값은 cp949
    with open(input_filename, mode='r', newline='', encoding='utf-8') as infile:
        reader = csv.reader(infile)
        data = list(reader)
        
    # a_utf8bom.csv 파일 쓰기, utf-8-sig(UTF-8 BOM) 인코딩 적용
    with open(output_filename, mode='w', newline='', encoding='utf-8-sig') as outfile:
        writer = csv.writer(outfile)
        writer.writerows(data) 
        
    print(f"파일 '{input_filename}'을(를) '{output_filename}'(으)로 저장했습니다(UTF-8 BOM 형식).")
except FileNotFoundError:
    print(f"오류: '{input_filename}'을(를) 찾을 수 없습니다.")
except Exception as e:
    print(f"오류가 발생했습니다: {e}")
반응형

+ Recent posts