망할 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
'개발개발 > 기타' 카테고리의 다른 글
Excel VBA에서 ODBC(Tibero DB) 연결하기 (0) | 2019.09.23 |
---|---|
Python HTTPS 연결시 TLS 1.0 사용 (0) | 2019.01.02 |
Python euc-kr 인코딩 변환 및 길이 계산하기 (0) | 2016.04.03 |
[Mac / Ubuntu] Go (golang) 설치하기 (0) | 2015.12.22 |
winapi gdi+ image load and convert to HBITMAP (0) | 2015.11.02 |