<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx</link><description>One can really never get enough of puns about the BOM (Byte Order Mark) and TSA. And when I say one, I mean I. :-) Just think back to blogs like Don't sneak a BOM in on someone who promises to ignore free space or Everyone seems averse to the BOM these</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9288800</link><pubDate>Wed, 07 Jan 2009 21:00:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9288800</guid><dc:creator>Josh</dc:creator><description>&lt;p&gt;wait...which plane? BMP? SMP? SIP? TIP? SSP?&lt;/p&gt;
&lt;p&gt;Sorry, I have nothing else useful to contribute here, though I'm a little surprised this problem isn't solved already...?!?&lt;/p&gt;</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9290335</link><pubDate>Thu, 08 Jan 2009 00:17:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9290335</guid><dc:creator>John Cowan</dc:creator><description>&lt;p&gt;See &lt;a rel="nofollow" target="_new" href="http://recycledknowledge.blogspot.com/2005/07/hello-i-am-xml-encoding-sniffer.html"&gt;http://recycledknowledge.blogspot.com/2005/07/hello-i-am-xml-encoding-sniffer.html&lt;/a&gt; for a formal English description of what you have to do to play in the Appendix F leagues.&lt;/p&gt;</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9293799</link><pubDate>Thu, 08 Jan 2009 08:00:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9293799</guid><dc:creator>ReallyEvilCanine</dc:creator><description>&lt;p&gt;Mike, you're the only person I know of who pronounces &amp;quot;bee-oh-em&amp;quot; as a word. Cakemakers and codebreakers have every right to say &amp;quot;bomb/bombe&amp;quot; but not we I18Ners.&lt;/p&gt;</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9294265</link><pubDate>Thu, 08 Jan 2009 08:58:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9294265</guid><dc:creator>Michael S. Kaplan</dc:creator><description>&lt;p&gt;Dude, you lead a sheltered life. In Unicode and related standards circles, in i18n conversations with developers at Adobe, Apple, IBM, Google, and Microsoft -- it is pronounced as a single word all the time....&lt;/p&gt;
</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9301145</link><pubDate>Fri, 09 Jan 2009 04:58:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9301145</guid><dc:creator>Maurits</dc:creator><description>&lt;p&gt;Here's my approach:&lt;/p&gt;
&lt;p&gt;enum BOM {&lt;/p&gt;
&lt;p&gt;	BOM_NONE,&lt;/p&gt;
&lt;p&gt;	BOM_UTF8,&lt;/p&gt;
&lt;p&gt;	BOM_UTF16LE,&lt;/p&gt;
&lt;p&gt;	BOM_UTF16BE,&lt;/p&gt;
&lt;p&gt;	BOM_UTF32BE,&lt;/p&gt;
&lt;p&gt;	BOM_UTF32LE,&lt;/p&gt;
&lt;p&gt;};&lt;/p&gt;
&lt;p&gt;HRESULT BOMFromStream(Byte pbBytes[], UINT cbLength, BOM *pBOM) {&lt;/p&gt;
&lt;p&gt;	if (NULL == pbBytes || NULL == pBOM) {&lt;/p&gt;
&lt;p&gt;		return E_POINTER;&lt;/p&gt;
&lt;p&gt;	}&lt;/p&gt;
&lt;p&gt;	// need at least two bytes for UTF16 BOMs&lt;/p&gt;
&lt;p&gt;	if (cbLength &amp;gt;= 2) {&lt;/p&gt;
&lt;p&gt;		if (0xFE == pbBytes[0] &amp;amp;&amp;amp; 0xFF == pbBytes[1]) {&lt;/p&gt;
&lt;p&gt;			*pBOM = BOM_UTF16BE;&lt;/p&gt;
&lt;p&gt;			return S_OK;&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;		if (0xFF == pbBytes[0] &amp;amp;&amp;amp; 0xFE == pbBytes[1]) {&lt;/p&gt;
&lt;p&gt;			*pBOM = BOM_UTF16LE;&lt;/p&gt;
&lt;p&gt;			return S_OK;&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;	}&lt;/p&gt;
&lt;p&gt;	// need at least three bytes for UTF8 BOM&lt;/p&gt;
&lt;p&gt;	if (&lt;/p&gt;
&lt;p&gt;		cbLength &amp;gt;= 3 &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;		0xEF == pbBytes[0] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;		0xBB == pbBytes[1] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;		0xBF == pbBytes[2]&lt;/p&gt;
&lt;p&gt;	) {&lt;/p&gt;
&lt;p&gt;		*pBOM = BOM_UTF8;&lt;/p&gt;
&lt;p&gt;		return S_OK;&lt;/p&gt;
&lt;p&gt;	}&lt;/p&gt;
&lt;p&gt;	// need at least four bytes for UTF32 BOMs&lt;/p&gt;
&lt;p&gt;	if (cbLength &amp;gt;= 4) {&lt;/p&gt;
&lt;p&gt;		if (&lt;/p&gt;
&lt;p&gt;			0 == pbBytes[0] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0 == pbBytes[1] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0xFE == pbBytes[2] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0xFF == pbBytes[3]&lt;/p&gt;
&lt;p&gt;		) {&lt;/p&gt;
&lt;p&gt;			*pBOM = BOM_UTF32BE;&lt;/p&gt;
&lt;p&gt;			return S_OK;&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;		if (&lt;/p&gt;
&lt;p&gt;			0xFF == pbBytes[0] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0xFE == pbBytes[1] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0 == pbBytes[2] &amp;amp;&amp;amp;&lt;/p&gt;
&lt;p&gt;			0 == pbBytes[3]&lt;/p&gt;
&lt;p&gt;		) {&lt;/p&gt;
&lt;p&gt;			*pBOM = BOM_UTF32LE;&lt;/p&gt;
&lt;p&gt;			return S_OK;&lt;/p&gt;
&lt;p&gt;		}		&lt;/p&gt;
&lt;p&gt;	}&lt;/p&gt;
&lt;p&gt;	// if we made it this far there's no recognizable BOM&lt;/p&gt;
&lt;p&gt;	*pBOM = BOM_NONE;&lt;/p&gt;
&lt;p&gt;	return S_OK;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Possible future additional features: sanity check UTF16 byte stream length is even, UTF32 is divisible by 4; advance byte stream by length of BOM.&lt;/p&gt;</description></item><item><title>Finding the BOM</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9302294</link><pubDate>Fri, 09 Jan 2009 20:53:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9302294</guid><dc:creator>PeterIs Ramblings</dc:creator><description>&lt;p&gt;Michael Kaplan posted a small challenge on his blog to write some small code to find out the Byte Order Marker or BOM in the start of a file. So I kicked up the C# compiler and wrote this little bit of code:public enum Encoding{ Unknown = 0, BomBigEnd&lt;/p&gt;
</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9302298</link><pubDate>Fri, 09 Jan 2009 20:56:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9302298</guid><dc:creator>Peter Ibbotson</dc:creator><description>&lt;p&gt;I've had a quick stab in C# I've put a longer version that does appendix F (also a port to C for byte counting purposes) on my blog here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.ibbotson.co.uk/peteri/index.php?/archives/120-Finding-the-BOM.html"&gt;http://www.ibbotson.co.uk/peteri/index.php?/archives/120-Finding-the-BOM.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;public enum Encoding&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;Unknown = 0, BomBigEndianUcs4, BomUcs4, BomUtf8,&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;BomUtf16, BomBigEndianUtf16&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// We use Bit 3 as a end of data marker, true means end&lt;/p&gt;
&lt;p&gt;// bit 5 happens to be same value as bit 3&lt;/p&gt;
&lt;p&gt;private static byte[] matchData =&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00,0x00,0xF6,0xFF, &amp;nbsp; &amp;nbsp;// &amp;nbsp;0- 00 00 FE FF Bom UCS4 Big endian&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xF7,0xF6,0x00,0x08, &amp;nbsp; &amp;nbsp;// &amp;nbsp;4- FF FE 00 00 Bom UCS4 Little endian&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xE7,0xB3,0xBF, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp;8- EF BB BF &amp;nbsp; &amp;nbsp;Bom UTF8 &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xF7,0xFE, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 12 - FF FE &amp;nbsp; &amp;nbsp; &amp;nbsp;Bom UTF16 Little endian&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xF6,0xFF &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 14 - FE FF &amp;nbsp; &amp;nbsp; &amp;nbsp;Bom UTF16 Big endian&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;};&lt;/p&gt;
&lt;p&gt;public static Encoding DetectType(byte[] data)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;int i = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;int offset = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;Encoding currentEncoding = Encoding.BomBigEndianUcs4;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;while (i &amp;lt; matchData.Length)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte compare = (byte)((matchData[i] &amp;amp; 0xf7) | ((matchData[i] &amp;amp; 0x20) &amp;gt;&amp;gt; 2));&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((offset &amp;gt;= data.Length) || (data[offset] != compare))&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;offset = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while ((matchData[i] &amp;amp; 0x08) == 0) i++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;currentEncoding++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((matchData[i] &amp;amp; 0x08) == 0x08) return currentEncoding;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;offset++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9322369</link><pubDate>Fri, 16 Jan 2009 03:23:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9322369</guid><dc:creator>Khedron</dc:creator><description>&lt;p&gt;Ok, everyone seems to be just testing for the bytes in order. I realise that I'm posting late, so may have to give up the points race, but here's my version. Auto-calculates the BOM based on endianness and wchar size and compares the char* against that. Except for UTF-8. I gave up on that (its midnight here &amp;amp; I'm going to bed now).&lt;/p&gt;

&lt;p&gt;#include &amp;lt;string&amp;gt;&lt;br&gt;#include &amp;lt;cstring&amp;gt;&lt;/p&gt;





&lt;p&gt;// Same-endian: feff&lt;br&gt;// Different-endian: fffe&lt;br&gt;enum endianness {&lt;br&gt;&amp;nbsp; be = -1,&lt;br&gt;&amp;nbsp; le = 1&lt;br&gt;};&lt;/p&gt;





&lt;p&gt;bool compare_bom_string(int sizeof_wchar, endianness end, const char* data)&lt;br&gt;{&lt;br&gt;&amp;nbsp; std::string bom(sizeof_wchar, 0);&lt;br&gt;&amp;nbsp; int pos = (end==be?3:0);&lt;br&gt;&lt;br&gt;&amp;nbsp; bom[pos] = '\xFF';&lt;br&gt;&amp;nbsp; bom[pos+end] = '\xFE';&lt;/p&gt;

&lt;p&gt; &amp;nbsp; return !memcmp((void*)data, (void*)bom.c_str(), sizeof_wchar);&lt;br&gt;}&lt;/p&gt;




&lt;p&gt;struct bom {&lt;br&gt;&amp;nbsp; bom(int i, endianness e) : sizeof_wchar(i), end(e) { }&lt;br&gt;&amp;nbsp; int sizeof_wchar;&lt;br&gt;&amp;nbsp; endianness end;&lt;br&gt;};&lt;/p&gt;

&lt;p&gt;int wchar_sizes[] = { 4, 2 };&lt;br&gt;endianness ends[] = { be, le };&lt;/p&gt;


&lt;p&gt;struct ex {&lt;br&gt;&amp;nbsp; ex(const char*m) : msg(m) { }&lt;br&gt;&amp;nbsp; const char * what() { return msg; }&lt;/p&gt;
&lt;p&gt; &amp;nbsp; const char *msg;&lt;/p&gt;
&lt;p&gt;};&lt;/p&gt;




&lt;p&gt;bom sniff(const char* data)&lt;br&gt;{&lt;br&gt;&amp;nbsp; for (int i = 0; i &amp;lt; sizeof wchar_sizes; ++i)&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; sizeof ends; ++j)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (compare_bom_string(wchar_sizes[i], ends[j], data)) return bom(wchar_sizes[i], ends[j]);&lt;/p&gt;

&lt;p&gt; &amp;nbsp; // Just got lazy&lt;br&gt;&amp;nbsp; const char* utf_8 = "\xEF\xBB\xBF";&lt;/p&gt;
&lt;p&gt; &amp;nbsp; if (!memcmp((void*)data, (void*)utf_8, 3)) return bom(1,le);&lt;/p&gt;


&lt;p&gt; &amp;nbsp; // Just got lazier&lt;br&gt;&amp;nbsp; throw ex("Whoops");;&lt;br&gt;}&lt;/p&gt;</description></item><item><title>re: Someone please detect if there's a BOM before the plane takes off!</title><link>http://blogs.msdn.com/michkap/archive/2009/01/07/9287052.aspx#9425693</link><pubDate>Mon, 16 Feb 2009 13:36:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9425693</guid><dc:creator>Anonymous</dc:creator><description>
&lt;p&gt;import Maybe&lt;br&gt;import List&lt;/p&gt;















&lt;p&gt;detectBOM s = snd . fromJust $ find ((flip isPrefixOf) s . fst) byteOrderMarks&lt;br&gt;&amp;nbsp;&amp;nbsp; where byteOrderMarks = [("\xef\xbb\xbf","UTF-8"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x00\x00\xfe\xff","UTF-32BE"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xff\xfe\x00\x00","UTF-32LE"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xfe\xff","UTF-16BE"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xff\xfe","UTF-16LE"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x2b\x2f\x76\x38","UTF-7"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x2b\x2f\x76\x39","UTF-7"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x2b\x2f\x76\x2b","UTF-7"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x2b\x2f\x76\x2f","UTF-7"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xf7\x64\x4c","UTF-1"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xdd\x73\x66\x73","UTF-EBCDIC"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x0e\xfe\xff","SCSU"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\xfb\xee\x28","BOCU-1"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("\x84\x31\x95\x33","GB18030"),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ("","NO BOM")]&lt;/p&gt;</description></item></channel></rss>