본문 바로가기
프로그래밍/Python

[Python / 파이썬]pandas to_csv로 저장한 csv파일의 한글이 깨질때(encoding='utf-8' 해도 깨질때)

by Mr.noobiest 2024. 2. 6.

 

 

 


 

 

df.to_csv 한글 깨짐

import pandas as pd

df.to_csv('./경로/파일명')

 

 

위 코드로 저장한 .csv 파일의 한글이 깨지는 문제가 발생, encoding="utf-8"를 해도 안되는 경우가 있습니다.

 

import pandas as pd

df.to_csv('./경로/파일명' , encoding="utf-8")

 

 


 

 

해결방법

import pandas as pd

df.to_csv('./경로/파일명' , encoding="utf-8-sig")

 

encoding="utf-8-sig" 로 해주면 한글이 깨지지 않습니다.

 

 


 

utf-8 / utf-8-sig / cp949 의 encoding 차이점은?

 

1. UTF-8: 유니코드를 8비트 단위로 인코딩하는 방식을 말합니다. 유니코드 문자를 1~4개의 바이트로 표현하며, 어떤 운영체제에서도 사용가능하고 대다수의 웹 페이지에서 사용하는 인코딩 방식입니다. 모든 유니코드 문자를 표현할 수 있습니다.


2. UTF-8-SIG: 'UTF-8' 인코딩에 BOM(Byte Order Mark)이라는 특수한 접두사를 추가한 것입니다. BOM은 파일이 UTF-8로 인코딩되었다는 것을 나타내는 역할을 합니다. 주로 윈도우 환경에서 사용되며, 어떤 텍스트 편집기에서도 UTF-8 인코딩을 인식할 수 있게 합니다.


3. CP949: 마이크로소프트에서 개발한 윈도우 운영체제를 위한 문자 인코딩 방식입니다. 주로 한글 윈도우에서 사용되며, 완성형 한글 코드인 KSC 5601에 8822자의 한글 음절을 추가하여 총 11172자의 한글 음절을 표현할 수 있습니다.

 

 

결론적으로, 'UTF-8'은 국제 표준으로 널리 사용되는 반면, 'UTF-8-SIG'는 BOM이 추가된 'UTF-8'이고, 'CP949'는 한글 윈도우 환경에 특화된 인코딩 방식입니다. 파일을 읽거나 쓰는 환경에 따라 적절한 인코딩 방식을 선택해야 합니다.

 

 

끝.

728x90
반응형