윈도우 CMD와 엑셀에서 CSV 텍스트파일 읽을때의 캐릭터셋
앞으로 캐릭터셋은 utf-8이 아니라 utf-8 bom을 사용해야 합니다.
utf-8 캐릭터셋은 한글이 깨져서 보이는데 이때문에 예전에 ANSI로 저장(euc-kr) 처리를 많이 하곤 했습니다.
하지만 현재는 utf-8과 호환되는 utf-8 bom 사용하는 것이 좋겠지요.
그래야 더 풍부한 캐릭터셋 특수문자(이모티콘)를 사용할 수 있기 때문에 그렇습니다. euc-kr은 이모티콘을 사용하지 못해요~
● 엑셀(Excel)에서 CSV 파일 한글 깨지지 않게 하려면
- 엑셀에서 바로 CSV 열기: EUC-KR 또는 UTF-8 BOM
● 캐릭터셋 참고사항
- 글로벌 호환성 생각: UTF-8 BOM
- 서버 시스템 처리 위주: UTF-8 (BOM 없음)
- 엑셀에서 깨짐 방지: UTF-8 BOM 강추
PowerShell 은 기본이 utf-8 bom 인데 cmd는 utf-8 bom이 없고 utf-8을 사용하려면 chcp 65001 명령을 통해서 가능!!
cmd 기본은 euc-kr과 호환이 되는 949
데이터베이스 설정도 반드시 utf-8 bom으로 해야 겠습니다. utf-8로 잘 보인다고 그냥 넘어 갈것이 아니라 반드시 utf-8 bom 인지 봐야 합니다.
에디터에 따라서는 utf-8+로 표시하기도 합니다.
아래는 CSV 저장하는 캐릭터셋과 별개로 PHP를 사용하면서 웹개발 할때의 캐릭터셋 문제 입니다. UTF-8 BOM은 앞에 표시하기 위해서 추가적인 캐릭터셋이 있는데 이게 ? 것으로 보이기도 합니다. 텍스트 파일인데 에디터나 어느곳에서 ? 이런게 보인다 그럼 UTF-8 BOM 으로 저장되서 그런가 생각해볼 필요가 있습니다.
✔ UTF-8 BOM이란?
UTF-8 BOM(Byte Order Mark)은 파일 맨 앞에 붙는 3바이트( EF BB BF )인데 이게 파일이 UTF-8 인코딩이라는 걸 표시하는 역할
✔ 웹에서 BOM이 문제되는 경우
- HTML CSS JS 같은 파일에 BOM이 붙으면 서버가 전달할 때 그 BOM이 출력물에 포함돼버릴 수 있음.
- 특히 JSON 응답 같은 경우 BOM이 있으면 프론트엔드에서 파싱 오류 가능 예) "Unexpected token in JSON"
- HTTP 응답 헤더로 이미 UTF-8 인코딩을 명시하면 BOM은 필요가 없음
- 일부 구버전 브라우저나 프로그램에서 BOM이 있는 파일 처리를 못하는 경우도 있음