7.2. codecs codec
Python codec () codec Python codec codec codec codec bytes
codec
-
codecs.encode(obj, encoding='utf-8', errors='strict') encoding codec obj
errors ()
'strict'ValueError(UnicodeEncodeErrorcodec ) codec Codec
-
codecs.decode(obj, encoding='utf-8', errors='strict') encoding codec obj
errors
'strict'ValueError(UnicodeDecodeErrorcodec ) codec Codec
codec
-
codecs.lookup(encoding) Python codec codec
CodecInfo
-
class
codecs.CodecInfo(encode, decode, streamreader=None, streamwriter=None, incrementalencoder=None, incrementaldecoder=None, name=None) codec codec
-
incrementalencoder -
incrementaldecoder IncrementalEncoderIncrementalDecodercodec ()
-
streamwriter -
streamreader StreamWriterStreamReadercodec
-
codec codec lookup() :
-
codecs.getincrementalencoder(encoding) codec
codec
LookupError
-
codecs.getincrementaldecoder(encoding) codec
codec
LookupError
-
codecs.getreader(encoding) codec
StreamReader
-
codecs.getwriter(encoding) codec
StreamWriter
codec codecs
-
codecs.register(search_function) codec 1
CodecInfoNone
-
codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1) mode /
StreamReaderWriter'r''\n'modeopen()'b'encoding codec
errors
'strict'ValueErrorbuffering
open()
-
codecs.EncodedFile(file, data_encoding, file_encoding=None, errors='strict') -
data_encoding file_encoding file_encoding data_encoding
file_encoding data_encoding
errors
'strict'ValueError
-
codecs.iterencode(iterator, encoding, errors='strict', **kwargs) iterator generator errors ()
strbase64_codec
-
codecs.iterdecode(iterator, encoding, errors='strict', **kwargs) iterator generator errors ()
bytesrot_13iterencode()
:
-
codecs.BOM -
codecs.BOM_BE -
codecs.BOM_LE -
codecs.BOM_UTF8 -
codecs.BOM_UTF16 -
codecs.BOM_UTF16_BE -
codecs.BOM_UTF16_LE -
codecs.BOM_UTF32 -
codecs.BOM_UTF32_BE -
codecs.BOM_UTF32_LE Unicode (BOM) UTF-16 UTF-32 UTF-8 Unicode
BOM_UTF16BOM_UTF16_BEBOM_UTF16_LEBOMBOM_UTF16BOM_LEBOM_UTF16_LEBOM_BEBOM_UTF16_BEUTF-8 UTF-32 BOM
7.2.1. Codec
codecs codec codec
Python codec 4 codec codec
7.2.1.1.
errors Python codec :
'strict' |
UnicodeError () strict_errors() |
'ignore' |
ignore_errors() |
'replace' |
Python codec U+FFFD '?' replace_errors() |
'xmlcharrefreplace' |
XML () xmlcharrefreplace_errors() |
'backslashreplace' |
backslashreplace_errors() |
'namereplace' |
\N{...} () namereplace_errors() |
'surrogateescape' |
U+DC80 U+DCFF 'surrogateescape' ( PEP 383 ) |
codec :
| Codecs | ||
|---|---|---|
'surrogatepass' |
utf-8, utf-16, utf-32, utf-16-be, utf-16-le, utf-32-be, utf-32-le | codecc |
3.1 : 'surrogateescape' 'surrogatepass'
3.4 : 'surrogatepass' utf-16* utf-32*
3.5 : 'namereplace'
3.5 : 'backslashreplace'
-
codecs.register_error(name, error_handler) error_handler name name errors error_handler
error_handler
UnicodeEncodeErrorstrbytesIndexError
()
-
codecs.strict_errors(exception) strictUnicodeError
7.2.1.2.
Codec :
-
Codec.encode(input[, errors]) input (, ) (
cp1252iso-8859-1)errors
'strict'CodeccodecsStreamWriter0
-
Codec.decode(input[, errors]) -
codec input bytes buffer
errors
'strict'CodeccodecsStreamReader0
7.2.1.3.
IncrementalEncoder IncrementalDecoder encode()/decode()
7.2.1.3.1. IncrementalEncoder
IncrementalEncoder Python codec
-
class
codecs.IncrementalEncoder(errors='strict') -
Python codec
IncrementalEncodererrorserrors
IncrementalEncoder-
encode(object[, final]) object ()
encode()final ()
-
setstate(state) state state
getstate()
-
7.2.1.3.2. IncrementalDecoder
IncrementalDecoder Python codec
-
class
codecs.IncrementalDecoder(errors='strict') -
Python codec
IncrementalDecodererrorserrors
IncrementalDecoder-
decode(object[, final]) object ()
decode()final () final ()()
-
setstate(state) (: ?) state state
getstate()
-
7.2.1.4.
StreamWriter StreamReader encodings.utf_8
7.2.1.4.1. StreamWriter
StreamWriter Codec Python codec
-
class
codecs.StreamWriter(stream, errors='strict') -
Python codec
stream codec
StreamWritererrors codecerrors
StreamWriter-
writelines(list) (
write()) codecs
-
7.2.1.4.2. StreamReader
StreamReader Codec Python codec
-
class
codecs.StreamReader(stream, errors='strict') -
Python codec
stream codec
StreamReadererrors codecerrors
StreamReadererrors
register_error()-
read([size[, chars[, firstline]]]) -
chars
read()size -1
firstline 1
size
-
readline([size[, keepends]]) 1
size
read()sizekeepends
-
readlines([sizehint[, keepends]]) -
keepends codec
sizehint
read()size
-
7.2.1.4.3. StreamReaderWriter
-
class
codecs.StreamReaderWriter(stream, Reader, Writer, errors='strict') StreamReaderWriterstream Reader WriterStreamReaderStreamWriter
7.2.1.4.4. StreamRecoder
-
class
codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors='strict') StreamRecoderencode decode (read()write()) Reader Writer (stream )Latin-1 UTF-8
stream
encode decode
CodecReader WriterStreamReaderStreamWriter
7.2.2. Unicode
0x00x10FFFF ( PEP 393 )
CPU
term: <text encoding>
('latin-1' 'iso-8859-1') 0255 0x00xff
codec U+00FF
UnicodeEncodeError (): UnicodeEncodeError: 'latin-1' codec can't encode character '\u1234' in position 3: ordinal not in range(256)
(charmap ) Unicode 0x00xff
encodings/cp1252.py ( Windows )
256
Unicode 1114112 256 Unicode 42: 2 UTF-32-BE UTF-32-LE UTF-32-BE UTF-32 : CPU UTF-16 UTF-32 BOM () Unicode U+FEFF UTF-16 UTF-32 (0xFFFE) Unicode UTF-16 UTF-32 U+FFFE U+FEFF ZERO WIDTH NO-BREAK SPACE : Unicode 4.0 ZERO WIDTH NO-BREAK SPACE U+FEFF ( U+2060 (WORD JOINER) ) Unicode U+FEFF : BOM ; ZERO WIDTH NO-BREAK SPACE
Unicode UTF-8 UTF-8 8 UTF-8 UTF-8 ()04 1 0 Unicode (x Unicode ):
U-00000000 U-0000007F |
0xxxxxxx |
U-00000080 U-000007FF |
110xxxxx 10xxxxxx |
U-00000800 U-0000FFFF |
1110xxxx 10xxxxxx 10xxxxxx |
U-00010000 U-0010FFFF |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
Unicode x
UTF-8 8 BOM U+FEFF () ZERO WIDTH NO-BREAK SPACE
charmap UTF-8 UTF-8 Microsoft Notepad UTF-8 (Python 2.5 "utf-8-sig" ) Unicode UTF-8 BOM ( 0xef, 0xbb, 0xbf ) charmap ( iso-8859-1
LATIN SMALL LETTER I WITH DIAERESISRIGHT-POINTING DOUBLE ANGLE QUOTATION MARKINVERTED QUESTION MARK
)utf-8-sig BOM utf-8-sig codec 3 0xef, 0xbb, 0xbf 3UTF-8 BOM
7.2.3.
Python codec C codec ; 'utf-8' 'utf_8' codec
CPython : codec CPython () : utf-8, utf8, latin-1, latin1, iso-8859-1, iso8859-1, mbcs (Windows ), ascii, us-ascii, utf-16, utf16, utf-32, utf32
3.6 : us-ascii
(EURO SIGN ) :
- ISO 8859
- Microsoft Windows 8859
- IBM EBCDIC
- ASCII IBM PC
| Codec | ||
|---|---|---|
| ascii | 646, us-ascii | |
| big5 | big5-tw, csbig5 | |
| big5hkscs | big5-hkscs, hkscs | |
| cp037 | IBM037, IBM039 | |
| cp273 | 273, IBM273, csIBM273 |
3.4 . |
| cp424 | EBCDIC-CP-HE, IBM424 | |
| cp437 | 437, IBM437 | |
| cp500 | EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 | |
| cp720 | ||
| cp737 | ||
| cp775 | IBM775 | |
| cp850 | 850, IBM850 | |
| cp852 | 852, IBM852 | |
| cp855 | 855, IBM855 | |
| cp856 | ||
| cp857 | 857, IBM857 | |
| cp858 | 858, IBM858 | |
| cp860 | 860, IBM860 | |
| cp861 | 861, CP-IS, IBM861 | |
| cp862 | 862, IBM862 | |
| cp863 | 863, IBM863 | |
| cp864 | IBM864 | |
| cp865 | 865, IBM865 | |
| cp866 | 866, IBM866 | |
| cp869 | 869, CP-GR, IBM869 | |
| cp874 | ||
| cp875 | ||
| cp932 | 932, ms932, mskanji, ms-kanji | |
| cp949 | 949, ms949, uhc | |
| cp950 | 950, ms950 | |
| cp1006 | Urdu | |
| cp1026 | ibm1026 | |
| cp1125 | 1125, ibm1125, cp866u, ruscii |
3.4 . |
| cp1140 | ibm1140 | |
| cp1250 | windows-1250 | |
| cp1251 | windows-1251 | |
| cp1252 | windows-1252 | |
| cp1253 | windows-1253 | |
| cp1254 | windows-1254 | |
| cp1255 | windows-1255 | |
| cp1256 | windows-1256 | |
| cp1257 | windows-1257 | |
| cp1258 | windows-1258 | |
| cp65001 | Windows : Windows UTF-8 ( 3.3 . |
|
| euc_jp | eucjp, ujis, u-jis | |
| euc_jis_2004 | jisx0213, eucjis2004 | |
| euc_jisx0213 | eucjisx0213 | |
| euc_kr | euckr, korean, ksc5601, ks_c-5601, ks_c-5601-1987, ksx1001, ks_x-1001 | |
| gb2312 | chinese, csiso58gb231280, euc- cn, euccn, eucgb2312-cn, gb2312-1980, gb2312-80, iso- ir-58 | |
| gbk | 936, cp936, ms936 | Unified Chinese |
| gb18030 | gb18030-2000 | Unified Chinese |
| hz | hzgb, hz-gb, hz-gb-2312 | |
| iso2022_jp | csiso2022jp, iso2022jp, iso-2022-jp | |
| iso2022_jp_1 | iso2022jp-1, iso-2022-jp-1 | |
| iso2022_jp_2 | iso2022jp-2, iso-2022-jp-2 | , , , , |
| iso2022_jp_2004 | iso2022jp-2004, iso-2022-jp-2004 | |
| iso2022_jp_3 | iso2022jp-3, iso-2022-jp-3 | |
| iso2022_jp_ext | iso2022jp-ext, iso-2022-jp-ext | |
| iso2022_kr | csiso2022kr, iso2022kr, iso-2022-kr | |
| latin_1 | iso-8859-1, iso8859-1, 8859, cp819, latin, latin1, L1 | |
| iso8859_2 | iso-8859-2, latin2, L2 | |
| iso8859_3 | iso-8859-3, latin3, L3 | |
| iso8859_4 | iso-8859-4, latin4, L4 | |
| iso8859_5 | iso-8859-5, cyrillic | |
| iso8859_6 | iso-8859-6, arabic | |
| iso8859_7 | iso-8859-7, greek, greek8 | |
| iso8859_8 | iso-8859-8, hebrew | |
| iso8859_9 | iso-8859-9, latin5, L5 | |
| iso8859_10 | iso-8859-10, latin6, L6 | |
| iso8859_11 | iso-8859-11, thai | |
| iso8859_13 | iso-8859-13, latin7, L7 | |
| iso8859_14 | iso-8859-14, latin8, L8 | |
| iso8859_15 | iso-8859-15, latin9, L9 | |
| iso8859_16 | iso-8859-16, latin10, L10 | |
| johab | cp1361, ms1361 | |
| koi8_r | ||
| koi8_t |
3.5 . |
|
| koi8_u | ||
| kz1048 | kz_1048, strk1048_2002, rk1048 |
3.5 . |
| mac_cyrillic | maccyrillic | |
| mac_greek | macgreek | |
| mac_iceland | maciceland | |
| mac_latin2 | maclatin2, maccentraleurope | |
| mac_roman | macroman, macintosh | |
| mac_turkish | macturkish | |
| ptcp154 | csptcp154, pt154, cp154, cyrillic-asian | |
| shift_jis | csshiftjis, shiftjis, sjis, s_jis | |
| shift_jis_2004 | shiftjis2004, sjis_2004, sjis2004 | |
| shift_jisx0213 | shiftjisx0213, sjisx0213, s_jisx0213 | |
| utf_32 | U32, utf32 | |
| utf_32_be | UTF-32BE | |
| utf_32_le | UTF-32LE | |
| utf_16 | U16, utf16 | |
| utf_16_be | UTF-16BE | |
| utf_16_le | UTF-16LE | |
| utf_7 | U7, unicode-1-1-utf-7 | |
| utf_8 | U8, UTF, utf8 | |
| utf_8_sig |
3.4 : utf-16* utf-32* (U+D800U+DFFF) utf-32*
7.2.4. Python
codec Python codec Python codec codec codec
7.2.4.1.
codec Unicode str bytes bytes-like object str
| Codec | ||
|---|---|---|
| idna | RFC 3490 encodings.idna errors='strict' |
|
| mbcs | ansi, dbcs | Windows : ANSI (CP_ACP) |
| oem | Windows : OEM (CP_OEMCP) 3.6 . |
|
| palmos | PalmOS 3.5 | |
| punycode | RFC 3492 codecs | |
| raw_unicode_escape | \uXXXX \UXXXXXXXX Latin-1 Python pickle |
|
| undefined | ||
| unicode_escape | ASCII Python Unicode Latin-1 Python UTF-8 | |
| unicode_internal | codecs 3.3 : PEP 393 |
7.2.4.2. (Binary Transforms)
codec bytes-like object bytes bytes.decode() str
| Codec | / | ||
|---|---|---|---|
| base64_codec [1] | base64, base_64 | MIME base64 ( 3.4 : bytes-like object |
base64.encodebytes() /
base64.decodebytes() |
| bz2_codec | bz2 | bz2 | bz2.compress() /
bz2.decompress() |
| hex_codec | hex | 2 16 | binascii.b2a_hex() /
binascii.a2b_hex() |
| quopri_codec | quopri, quotedprintable, quoted_printable | MIME quoted printable | quotetabs=True quopri.encode() / quopri.decode() |
| uu_codec | uu | uuencode | uu.encode() /
uu.decode() |
| zlib_codec | zip, zlib | gzip | zlib.compress() /
zlib.decompress() |
| [1] | 'base64_codec' str ASCII |
3.2 : (: 2.x 3.0 )
3.4 : (: 2.x 3.2 )
7.2.4.3. (Text Transforms)
codec str str str.encode() bytes
| Codec | ||
|---|---|---|
| rot_13 | rot13 | (Caesar-cypher) |
3.2 : rot_13 (: 2.x 3.0 )
3.4 : rot13 (: 2.x 3.2 )
7.2.5. encodings.idna (IDNA)
RFC 3490 ( IDNA: Internationalized Domain Names in Applications) RFC 3492 (Nameprep: (IDN) stringprep ) punycode stringprep
RFC ASCII (www.Alliancefranaise.nu ) ASCII ASCII (ACE www.xn--alliancefranaise-npb.nu ) ACE DNS HTTP Host ; : Unicode IDNA ACE Unicode
Python supports this conversion in several ways: the idna codec performs
conversion between Unicode and ACE, separating an input string into labels
based on the separator characters defined in section 3.1 (1) of RFC 3490
and converting each label to ACE as required, and conversely separating an input
byte string into labels based on the . separator and converting any ACE
labels found into unicode. Furthermore, the socket module
transparently converts Unicode host names to ACE, so that applications need not
be concerned about converting host names themselves when they pass them to the
socket module. On top of that, modules that have host names as function
parameters, such as http.client and ftplib, accept Unicode host
names (http.client then also transparently sends an IDNA hostname in the
Host field if it sends that field at all).
() Unicode : Unicode
encodings.idna nameprep nameprep nameprep
-
encodings.idna.ToASCII(label) RFC 3490 ASCII
UseSTD3ASCIIRules
-
encodings.idna.ToUnicode(label) RFC 3490 Unicode
7.2.6. encodings.mbcs Windows ANSI
ANSI (CP_ACP)
: Windows
3.3 :
3.2 : 3.2 errors ; 'replace' 'ignore'
7.2.7. encodings.utf_8_sig BOM UTF-8
UTF-8 codec UTF-8 UTF-8 BOM () UTF-8 BOM