망할 MS는 unicode 를 기본지원하지는 못할망정 호환지원도 제대로 못한다.

 

utf-8 csv의 경우에, Excel 로 바로 열면 한글이 모두 깨져버리는데,

데이터 불러오기 등의 번거로운 방법을 통해 불러오더라도 깨지는 X같은 경우가 발생한다.

 

나도 웬만하면 cp949로 인코딩을 굳이 해줄텐데,, 웹에서 javascript 로 데이터를 생성하고 바로 내려받는지라,

어떻게 방법이 없이 MS에 대한 저주만 한가득 하고 있었는데....

 

-------------------------------------------

 

UTF-8 BOM 을 통해 (반틈만) 해결하였다.

 

방법은, 파일의 가장 앞에 \xef\xbb\xbf 혹은 \ufeff 을 넣어주면 된다.

이제 Excel 에서 바로 열어도 한글이 깨지지 않는다.

 

나의 경우엔

'data:application/csv;charset=utf-8,'+encodeURIComponent(csv)

'data:application/csv;charset=utf-8,\ufeff'+encodeURIComponent(csv)

이렇게 바꿔주었다.

 

다만, Excel 이 아닌 다른 프로그램으로 열거나 직접 csv파일을 읽어와서 작동시킬때 문제가 생길 수도 있는데....

이건 MS 를 욕하자.

 

-------------------------------------------

Python의 경우 파일을 쓸 때 인코딩을 utf-8-sig 로 지정하면 된다

open(filepath, 'w', encoding='utf-8-sig')

-------------------------------------------

 

MS 는 IE(+Edge)와 CP949(euc-kr)를 하루빨리 없애버렸으면 좋겠다.

 

 

참고

 

UTF-8 인코딩에서의 BOM(Byte Order Mark) 문제 :: wystan's tales

 

https://stackoverflow.com/questions/17879198/adding-utf-8-bom-to-string-blob

+ Recent posts