본문 바로가기

Programming/XML

BOM issue (65279 '')

XmlSerializer를 이용해서 개체를 저장하는 방식을 자주 사용하는데, 갑자기 desirialize를 위한 parsing이 제대로 되지 않는 issue를 접하게 되었습니다.

파일이 손상되었는 지, 다른 logic이 변경되었는 지를 열심히 확인하였지만... 그런 건 없었구요. (내 반나절... ㅜㅠ)


문제의 원인은 UTF8로 encoding한 xml파일의 앞쪽에 BOM(Byte Order Mark)가 포함되어 있는 것이 었습니다.

Paser에서 '<'가 아닌 다른 character를 만나니 read를 할 수 없고, 결국 desirialize도 할 수 없게 된 거죠.


이를 해결하기 위해서는 file을 StreamReader로 읽으면 됩니다.

(StreamReader로 읽는 이유는 decoding을 하기 위함입니다.)


Example code



References

BOM(Byte Order Mark): 유니코드에서 엔디안을 구별하기 위해 사용되는 문자로, 문자 값은 U_FEFF이다.

http://stackoverflow.com/questions/2915182/how-do-i-ignore-the-utf-8-byte-order-marker-in-string-comparisons


'Programming > XML' 카테고리의 다른 글

Export excel file via Asp.NET MVC, using OpenXml  (0) 2015.09.08
XML vs. Json comparison  (0) 2014.07.22
How to handling MS excel file  (0) 2014.07.22
XML Element vs. Attribute  (1) 2014.06.30