If you’re working with BizTalk, then you owe it to yourself to go read Tomas
Restrepo’s latest post
.  In short, he has located a bug in how the XmlDisassembler
handles the <?xml?> declaration to determine encoding.

If the XmlDisassembler pipeline component encounters <?xml version=’1.0′
encoding=’UTF-8′?> it will throw an exception which has nothing to do with the
real problem.  It has no problem with <?xml version=’1.0′ encoding=”UTF-8″?>
though.  Go read Tomas’ article for the full details.  Great job Tomas in
chasing this down!