blob: 287eb877feffba324696f13baa9aaa1244c9a0ff [file] [log] [blame]
Victor Stinner2f3ca9f2011-10-27 01:38:56 +02001"""
2Code page 65001: Windows UTF-8 (CP_UTF8).
3"""
4
5import codecs
6import functools
7
8if not hasattr(codecs, 'code_page_encode'):
9 raise LookupError("cp65001 encoding is only available on Windows")
10
11### Codec APIs
12
13encode = functools.partial(codecs.code_page_encode, 65001)
14decode = functools.partial(codecs.code_page_decode, 65001)
15
16class IncrementalEncoder(codecs.IncrementalEncoder):
17 def encode(self, input, final=False):
18 return encode(input, self.errors)[0]
19
20class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
21 _buffer_decode = decode
22
23class StreamWriter(codecs.StreamWriter):
24 encode = encode
25
26class StreamReader(codecs.StreamReader):
27 decode = decode
28
29### encodings module API
30
31def getregentry():
32 return codecs.CodecInfo(
33 name='cp65001',
34 encode=encode,
35 decode=decode,
36 incrementalencoder=IncrementalEncoder,
37 incrementaldecoder=IncrementalDecoder,
38 streamreader=StreamReader,
39 streamwriter=StreamWriter,
40 )