Table of Contents

728x90

엑셀에서 CSV 파일의 한글이 깨져 보이는 이유는 주로 인코딩 문제 때문입니다. Python에서는 파일을 UTF-8로 처리하는 것이 기본이지만, Microsoft Excel은 CSV 파일을 열 때 기본적으로 ANSI(또는 Windows-1252) 같은 다른 인코딩 방식을 사용하기 때문에 한글이 깨져 보일 수 있습니다.

원인:

  1. Excel의 기본 인코딩 문제:
    • 엑셀은 CSV 파일을 열 때 UTF-8 인코딩을 자동으로 인식하지 않는 경우가 많습니다. 엑셀은 ANSI 또는 Windows-1252 같은 인코딩 방식으로 CSV 파일을 열기 때문에, UTF-8로 저장된 한글 데이터가 깨져 보일 수 있습니다.
    • 특히, UTF-8 인코딩 파일에 BOM(Byte Order Mark)이 없는 경우, 엑셀이 이를 UTF-8 파일로 인식하지 못해 깨진 문자로 표시됩니다.
  2. Python에서의 처리:
    • Python은 파일을 읽고 쓸 때 UTF-8 인코딩을 기본으로 사용합니다. 그래서 Python 내에서는 한글이 정상적으로 표시되지만, 엑셀에서는 인코딩을 제대로 처리하지 못해 깨진 문자로 보이는 경우가 있습니다.

해결 방법:

1. UTF-8-SIG로 저장하기 (BOM 포함)

  • BOM(Byte Order Mark)을 추가하여 파일을 저장하면, 엑셀에서 해당 파일을 UTF-8로 인식하여 한글이 깨지지 않고 잘 보입니다.
  • Python에서 파일을 저장할 때 utf-8-sig 인코딩을 사용하면 엑셀에서 파일을 열 때도 정상적으로 한글이 표시됩니다.
  • # UTF-8-SIG 인코딩으로 CSV 파일 저장 df.to_csv('file.csv', encoding='utf-8-sig', index=False)
  • 이렇게 하면 엑셀에서 파일을 열 때 BOM이 포함된 UTF-8 파일로 인식되어 한글이 정상적으로 표시됩니다.

2. 엑셀에서 인코딩 설정을 수동으로 선택

  • 엑셀에서 CSV 파일을 열 때, 직접 인코딩을 지정하여 파일을 열 수 있습니다.
    1. 엑셀을 열고 [데이터] > [텍스트/CSV 파일 가져오기]를 선택합니다.
    2. 파일을 선택한 후 파일 인코딩을 UTF-8로 지정하여 가져옵니다.

3. Excel 대신 다른 CSV 뷰어 사용

  • 엑셀 대신 구글 스프레드시트LibreOffice Calc 같은 프로그램을 사용하면 UTF-8 인코딩을 자동으로 인식하여 한글이 깨지지 않고 표시될 수 있습니다.

요약:

  • Python은 기본적으로 UTF-8 인코딩을 사용하므로 한글이 정상적으로 보이지만, Excel은 기본적으로 ANSI 등의 인코딩을 사용하여 한글이 깨져 보일 수 있습니다.
  • 이를 해결하려면 utf-8-sig로 저장하여 엑셀이 UTF-8 인코딩을 인식하도록 하거나, 엑셀에서 CSV 파일을 열 때 수동으로 UTF-8 인코딩을 지정해주는 방법을 사용할 수 있습니다.