<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
<link rel=
"STYLESHEET" href=
"lib.css" type='text/css'
/>
<link rel=
"SHORTCUT ICON" href=
"../icons/pyfav.png" type=
"image/png" />
<link rel='start' href='../index.html' title='Python Documentation Index'
/>
<link rel=
"first" href=
"lib.html" title='Python Library Reference'
/>
<link rel='contents' href='contents.html'
title=
"Contents" />
<link rel='index' href='genindex.html' title='Index'
/>
<link rel='last' href='about.html' title='About this document...'
/>
<link rel='help' href='about.html' title='About this document...'
/>
<link rel=
"next" href=
"standard-encodings.html" />
<link rel=
"prev" href=
"module-codecs.html" />
<link rel=
"parent" href=
"module-codecs.html" />
<link rel=
"next" href=
"codec-objects.html" />
<meta name='aesop' content='information'
/>
<title>4.9.1 Codec Base Classes
</title>
<div id='top-navigation-panel' xml:id='top-navigation-panel'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"4.9 codecs "
href=
"module-codecs.html"><img src='../icons/previous.png'
border='
0' height='
32' alt='Previous Page' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"parent" title=
"4.9 codecs "
href=
"module-codecs.html"><img src='../icons/up.png'
border='
0' height='
32' alt='Up One Level' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"next" title=
"4.9.1.1 Codec Objects"
href=
"codec-objects.html"><img src='../icons/next.png'
border='
0' height='
32' alt='Next Page' width='
32'
/></A></td>
<td align=
"center" width=
"100%">Python Library Reference
</td>
<td class='online-navigation'
><a rel=
"contents" title=
"Table of Contents"
href=
"contents.html"><img src='../icons/contents.png'
border='
0' height='
32' alt='Contents' width='
32'
/></A></td>
<td class='online-navigation'
><a href=
"modindex.html" title=
"Module Index"><img src='../icons/modules.png'
border='
0' height='
32' alt='Module Index' width='
32'
/></a></td>
<td class='online-navigation'
><a rel=
"index" title=
"Index"
href=
"genindex.html"><img src='../icons/index.png'
border='
0' height='
32' alt='Index' width='
32'
/></A></td>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"module-codecs.html">4.9 codecs
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"module-codecs.html">4.9 codecs
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"codec-objects.html">4.9.1.1 Codec Objects
</A>
<!--End of Navigation Panel-->
<H2><A NAME=
"SECTION006910000000000000000">
4.9.1 Codec Base Classes
</A>
The
<tt class=
"module">codecs
</tt> defines a set of base classes which define the
interface and can also be used to easily write you own codecs for use
Each codec has to define four interfaces to make it usable as codec in
Python: stateless encoder, stateless decoder, stream reader and stream
writer. The stream reader and writers typically reuse the stateless
encoder/decoder to implement the file protocols.
The
<tt class=
"class">Codec
</tt> class defines the interface for stateless
To simplify and standardize error handling, the
<tt class=
"method">encode()
</tt> and
<tt class=
"method">decode()
</tt> methods may implement different error handling
schemes by providing the
<var>errors
</var> string argument. The following
string values are defined and implemented by all standard Python
<div class=
"center"><table class=
"realtable">
<th class=
"left" >Value
</th>
<th class=
"left" >Meaning
</th>
<tr><td class=
"left" valign=
"baseline"><code>'strict'
</code></td>
<td class=
"left" >Raise
<tt class=
"exception">UnicodeError
</tt> (or a subclass);
this is the default.
</td></tr>
<tr><td class=
"left" valign=
"baseline"><code>'ignore'
</code></td>
<td class=
"left" >Ignore the character and continue with the next.
</td></tr>
<tr><td class=
"left" valign=
"baseline"><code>'replace'
</code></td>
<td class=
"left" >Replace with a suitable replacement character;
Python will use the official U+FFFD REPLACEMENT
CHARACTER for the built-in Unicode codecs on
decoding and '?' on encoding.
</td></tr>
<tr><td class=
"left" valign=
"baseline"><code>'xmlcharrefreplace'
</code></td>
<td class=
"left" >Replace with the appropriate XML
character reference (only for encoding).
</td></tr>
<tr><td class=
"left" valign=
"baseline"><code>'backslashreplace'
</code></td>
<td class=
"left" >Replace with backslashed escape sequences
(only for encoding).
</td></tr></tbody>
The set of allowed values can be extended via
<tt class=
"method">register_error
</tt>.
<p><br /></p><hr class='online-navigation'
/>
<div class='online-navigation'
>
<!--Table of Child-Links-->
<A NAME=
"CHILD_LINKS"><STRONG>Subsections
</STRONG></a>
<LI><A href=
"codec-objects.html">4.9.1.1 Codec Objects
</a>
<LI><A href=
"stream-writer-objects.html">4.9.1.2 StreamWriter Objects
</a>
<LI><A href=
"stream-reader-objects.html">4.9.1.3 StreamReader Objects
</a>
<LI><A href=
"stream-reader-writer.html">4.9.1.4 StreamReaderWriter Objects
</a>
<LI><A href=
"stream-recoder-objects.html">4.9.1.5 StreamRecoder Objects
</a>
<!--End of Table of Child-Links-->
<div class='online-navigation'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"4.9 codecs "
href=
"module-codecs.html"><img src='../icons/previous.png'
border='
0' height='
32' alt='Previous Page' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"parent" title=
"4.9 codecs "
href=
"module-codecs.html"><img src='../icons/up.png'
border='
0' height='
32' alt='Up One Level' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"next" title=
"4.9.1.1 Codec Objects"
href=
"codec-objects.html"><img src='../icons/next.png'
border='
0' height='
32' alt='Next Page' width='
32'
/></A></td>
<td align=
"center" width=
"100%">Python Library Reference
</td>
<td class='online-navigation'
><a rel=
"contents" title=
"Table of Contents"
href=
"contents.html"><img src='../icons/contents.png'
border='
0' height='
32' alt='Contents' width='
32'
/></A></td>
<td class='online-navigation'
><a href=
"modindex.html" title=
"Module Index"><img src='../icons/modules.png'
border='
0' height='
32' alt='Module Index' width='
32'
/></a></td>
<td class='online-navigation'
><a rel=
"index" title=
"Index"
href=
"genindex.html"><img src='../icons/index.png'
border='
0' height='
32' alt='Index' width='
32'
/></A></td>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"module-codecs.html">4.9 codecs
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"module-codecs.html">4.9 codecs
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"codec-objects.html">4.9.1.1 Codec Objects
</A>
<span class=
"release-info">Release
2.4.2, documentation updated on
28 September
2005.
</span>
<!--End of Navigation Panel-->
See
<i><a href=
"about.html">About this document...
</a></i> for information on suggesting changes.