Are we guaranteed that all UTF16 strings will start with a BOM?  Would it be safer to check for FEFF and FFFE explicitly and if the value isn't one of those two back up two bytes and assume LE or BE by default?  I don't know what the spec says here. But if you change the code here, change it in BlobView too, please.