1 """ Python 'utf-16' Codec
4 Written by Marc-Andre Lemburg (mal@lemburg.com).
6 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
13 class Codec(codecs
.Codec
):
15 # Note: Binding these as C functions will result in the class not
16 # converting them to methods. This is intended.
17 encode
= codecs
.utf_16_encode
18 decode
= codecs
.utf_16_decode
20 class StreamWriter(Codec
,codecs
.StreamWriter
):
21 def __init__(self
, stream
, errors
='strict'):
23 codecs
.StreamWriter
.__init
__(self
, stream
, errors
)
25 def write(self
, data
):
26 result
= codecs
.StreamWriter
.write(self
, data
)
27 if not self
.bom_written
:
29 if sys
.byteorder
== 'little':
30 self
.encode
= codecs
.utf_16_le_encode
32 self
.encode
= codecs
.utf_16_be_encode
35 class StreamReader(Codec
,codecs
.StreamReader
):
36 def __init__(self
, stream
, errors
='strict'):
38 codecs
.StreamReader
.__init
__(self
, stream
, errors
)
40 def read(self
, size
=-1):
42 signature
= self
.stream
.read(2)
43 if signature
== codecs
.BOM_BE
:
44 self
.decode
= codecs
.utf_16_be_decode
45 elif signature
== codecs
.BOM_LE
:
46 self
.decode
= codecs
.utf_16_le_decode
48 raise UnicodeError,"UTF-16 stream does not start with BOM"
54 return codecs
.StreamReader
.read(self
, size
)
56 ### encodings module API
60 return (Codec
.encode
,Codec
.decode
,StreamReader
,StreamWriter
)