Aaron H. Kim Fearless Integration Maniac

BOM이란?

2007-04-08
Aaron Kim

맨 처음 이 문제를 발견했을 때는 어떻게 어떻게 해결했는데
정확한 원인을 알지 못한 체 넘어갔던 기억이 납니다.

BOM은 BizTalk 2006과 BizTalk 2004에서(라기 보다는 모든 유니코드 문서에서)
Message에 포함되는 hex 값으로서 Message를 big endian으로 읽어야 할 지
little endian으로 읽어야 할지 알려주는 indicator입니다. (Wikipedia <A class=external title=참고 href=”http://en.wikipedia.org/wiki/Byte_Order_Mark”>참고</A>)

참고 : Message가 UTF-16 인코딩일 경우, byte order mark가 FE FF 이면 big-endian, FF FE 이면 little-endian. UTF-8 인코딩인 경우, 항상 EF BB BF.Target System이 byte order mark가 포함된 메시지를 받을 수 없는 시스템일 경우가 아주 드물게 있는데 그런 경우라면 에러가 발생하겠죠.

BOM을 제거해야 합니다.

참고 : Message가 UTF-16 인코딩일 경우, byte order mark가 FE FF 이면 big-endian, FF FE 이면 little-endian. UTF-8 인코딩인 경우, 항상 EF BB BF.Target System이 byte order mark가 포함된 메시지를 받을 수 없는 시스템일 경우가 아주 드물게 있는데 그런 경우라면 에러가 발생하겠죠.

BizTalk 2004의 경우, Custom Pipeline을 사용하되 BOM을 제거하는 Component를 만들어서 Pipeline에 불러들여 사용한다. -> 알아서 해결하라는 얘기네요. ^^

BizTalk 2006의 경우, Custom Pipeline을 사용하되 Assembler Property에서 Preserve byte order mark를 False로 바꾼다. (Default는 True)

참고 : Message가 UTF-16 인코딩일 경우, byte order mark가 FE FF 이면 big-endian, FF FE 이면 little-endian. UTF-8 인코딩인 경우, 항상 EF BB BF.Target System이 byte order mark가 포함된 메시지를 받을 수 없는 시스템일 경우가 아주 드물게 있는데 그런 경우라면 에러가 발생하겠죠.

관련글

How to delete a byte order mark from an outgoing message in BizTalk Server 2006 and in BizTalk Server 2004(http://support.microsoft.com/kb/921044/en-us?spid=9774&sid=global)


Similar Posts

Comments