티스토리 뷰

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-8EF BB BF
UTF-16 Big EndianFE FF
UTF-16 Little EndianFF FE
UTF-32 Big Endian00 00 FE FF
UTF-32 Little EndianFF 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추가



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함