mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
Close #13247: Add cp65001 codec, the Windows UTF-8 (CP_UTF8)
This commit is contained in:
parent
cc9695643f
commit
2f3ca9f20e
5 changed files with 168 additions and 60 deletions
40
Lib/encodings/cp65001.py
Normal file
40
Lib/encodings/cp65001.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
"""
|
||||
Code page 65001: Windows UTF-8 (CP_UTF8).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import functools
|
||||
|
||||
if not hasattr(codecs, 'code_page_encode'):
|
||||
raise LookupError("cp65001 encoding is only available on Windows")
|
||||
|
||||
### Codec APIs
|
||||
|
||||
encode = functools.partial(codecs.code_page_encode, 65001)
|
||||
decode = functools.partial(codecs.code_page_decode, 65001)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return encode(input, self.errors)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
|
||||
_buffer_decode = decode
|
||||
|
||||
class StreamWriter(codecs.StreamWriter):
|
||||
encode = encode
|
||||
|
||||
class StreamReader(codecs.StreamReader):
|
||||
decode = decode
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp65001',
|
||||
encode=encode,
|
||||
decode=decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue