यूनिकोड चरित्र U+FEFF
बाइट ऑर्डर मार्क या बीओएम है, और इसका उपयोग बड़े और छोटे-एंडियन यूटीएफ -16 एन्कोडिंग के बीच अंतर बताने के लिए किया जाता है। यदि आप सही कोडेक का उपयोग करके वेब पेज को डीकोड करते हैं, तो पायथन आपके लिए इसे हटा देगा। उदाहरण:
#!python2
#coding: utf8
u = u'ABC'
e8 = u.encode('utf-8') # encode without BOM
e8s = u.encode('utf-8-sig') # encode with BOM
e16 = u.encode('utf-16') # encode with BOM
e16le = u.encode('utf-16le') # encode without BOM
e16be = u.encode('utf-16be') # encode without BOM
print 'utf-8 %r' % e8
print 'utf-8-sig %r' % e8s
print 'utf-16 %r' % e16
print 'utf-16le %r' % e16le
print 'utf-16be %r' % e16be
print
print 'utf-8 w/ BOM decoded with utf-8 %r' % e8s.decode('utf-8')
print 'utf-8 w/ BOM decoded with utf-8-sig %r' % e8s.decode('utf-8-sig')
print 'utf-16 w/ BOM decoded with utf-16 %r' % e16.decode('utf-16')
print 'utf-16 w/ BOM decoded with utf-16le %r' % e16.decode('utf-16le')
ध्यान दें कि EF BB BF
UTF-8-Encoded BOM है। यह UTF-8 के लिए आवश्यक नहीं है, लेकिन केवल एक हस्ताक्षर के रूप में कार्य करता है (आमतौर पर विंडोज पर)।
आउटपुट:
utf-8 'ABC'
utf-8-sig '\xef\xbb\xbfABC'
utf-16 '\xff\xfeA\x00B\x00C\x00' # Adds BOM and encodes using native processor endian-ness.
utf-16le 'A\x00B\x00C\x00'
utf-16be '\x00A\x00B\x00C'
utf-8 w/ BOM decoded with utf-8 u'\ufeffABC' # doesn't remove BOM if present.
utf-8 w/ BOM decoded with utf-8-sig u'ABC' # removes BOM if present.
utf-16 w/ BOM decoded with utf-16 u'ABC' # *requires* BOM to be present.
utf-16 w/ BOM decoded with utf-16le u'\ufeffABC' # doesn't remove BOM if present.
ध्यान दें कि utf-16
कोडेक को BOM मौजूद होने की आवश्यकता है , या पायथन को पता नहीं होगा कि डेटा बड़ा है या छोटा-सा एंडियन।