'Bom'에 해당되는 글 2건

  1. 2010.04.23 iconv() 함수 완전정복(?)
  2. 2010.03.04 Unicode BOM(Byte Order Mark)
iconv() 함수에서
변환결과로 나와야 하는 방법이 unicode일 경우에는 (일단 다른건 안해봤으니 -ㅁ-?)
(strlen(inbuf) + 2) * 2 가 된다.

size_t iconv(iconv_t cd,
                     char **inbuf, size_t *inbytesleft,
                     char **outbuf, size_t *outbytesleft);

예를 들어 UTF-8을 UNICODE로 변환시에는
UTF-8 문자열 특성상, stelen(utf8str) == 100 일 경우
유니코드(2바이트) 스트링은 최소 25에서 최대 100 까지 변환이 된다.

그리고 iconv 특성상 처음에 2바이트 BOM(Byte Order Mark)을 붙이므로
실질적으로 변환을 위해 필요로 하는 outbuf의 길이는
(strlen(inbuf) + 2) * 2 가 된다.

원래대로라면
(strlen(inbuf) + 1) * 2 + 2 이고
+1 은 '\0'
+2 는 Unicode BOM(0xFEFF in big endian)이다.

[링크 : http://mwultong.blogspot.com/2006/05/qna-unicode-bom-byte-order-mark.html]


덧 : UTF-8로 인코딩된 아랍어의 경우, 조합은 별도로 해주어야 한다.
iconv()가 UNICODE로 변환은 해주지만, 그렇다고 해서 조합까지 해주지는 않는다.
Posted by 구차니
회사에서 이야기 하는 BOM과는 다르다!(Bill of Material)
아무튼 이 BOM이라는 녀석은
일종의 헤더로서

텍스트 파일의 인코딩을 알려주는 역활을 한다.
예를 들어 UTF-8, ANSI 이런 구분을 하는 것도 이 BOM이 존재하기 때문에 가능한 것이다.


Bytes Encoding Form
00 00 FE FF UTF-32, big-endian
FF FE 00 00 UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE UTF-16, little-endian
EF BB BF UTF-8
[링크 : http://www.unicode.org/faq/utf_bom.html]

[링크 : http://mwultong.blogspot.com/2006/05/qna-unicode-bom-byte-order-mark.html]
[링크 : http://devhome.tistory.com/11]
[링크 : http://en.wikipedia.org/wiki/Byte_order_mark]
Posted by 구차니