バグがあります python3.xでのみ修正されたpython2.xで。実際、このバグはOS Xのiconvにもあります(ただし、glibcにはありません)。
何が起こっているのか:
Python 2.xは、UTF8サロゲートペア[1]を無効として認識しません(これが文字シーケンスです)
これはすべき 必要なものはすべてあります:
foo.decode('utf8').encode('utf8')
しかし、彼らが修正していないそのバグのおかげで、サロゲートペアをキャッチしません。
これをPython2.xで試してから、3.xで試してください:
b'\xed\xbd\xbf'.decode('utf8')
後者では(正しく)エラーがスローされます。 2.xブランチでも修正されていません。詳細については、[2]および[3]を参照してください
[1] https://www.rfc-editor.org/rfc/ rfc3629#section-4
[2] http://bugs.python.org/issue9133
[3] http://bugs.python.org/issue8271#msg102209