티스토리 뷰
Unicode encoding 방식에는 여러가지가 있는데, 그중에서 최근 많이 쓰는 방식 중에 하나가 UTF 방식이다.
UTF 방식은 UTF-8, UTF-16, UTF-32 등으로 나눠지는데,
특히, text 파일을 저장할 때 어떤 encoding 방식을 사용했는지 나타내기 위해서,
문서의 가장 앞부분에 BOM(Byte Order Mark)라는 것을 넣는다.
즉, text 파일을 열 때, BOM 을 확인하고 어떤 encoding 방식이라는 것을 정확하게 인식한 후 decoding 하는 것이다. 그런데 UTF-8의 경우, 이 BOM의 처리방식이 약간 애매하고, 그래서 문제를 일으킬 수 있다.
아래의 표는 encoding 방식에 따른 BOM을 나타낸 것이다.
인코딩 방식 | Byte Order Mark(BOM) |
---|---|
UTF-8 | EF BB BF |
UTF-16 Big Endian | FE FF |
UTF-16 Little Endian | FF FE |
UTF-32 Big Endian | 00 00 FE FF |
UTF-32 Little Endian | FF FE 00 00 |
예를 들어서, 처음 2개의 바이트가 FE FF로 시작하면 그 문서는 UTF-16 Big Endian으로 encoding된 것이다.
ex) php에서 BOM 추가해서 csv파일 출력하는 코드
header("Content-type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=test.csv");
header("Content-Description: PHP4 Generated Data");
echo "\xEF\xBB\xBF"; // BOM추가
'웹 프로그래밍' 카테고리의 다른 글
[facebook] 페이스북 공유하기 로직 & 페북 프로필 이미지 가져오기 (0) | 2015.12.10 |
---|---|
[Mysql] set names euckr ?? db와 html 캐릭터 인코딩셋이 다른경우 (0) | 2015.11.25 |
Gearman에 대해 알아보자 (0) | 2015.11.11 |
HTTP/2에 대해 알아보자 (0) | 2015.11.06 |
[웹 프로그래밍] crontab 사용법 (0) | 2015.10.22 |
댓글