Vyskytla se chyba v pythonu 2.x je to opraveno pouze v pythonu 3.x. Ve skutečnosti je tato chyba dokonce i v iconv OS X (ale ne v glibc).
Zde je to, co se děje:
Python 2.x nerozpozná náhradní páry UTF8 [1] jako neplatné (což je vaše sekvence znaků)
Toto by mělo být vše, co je potřeba:
foo.decode('utf8').encode('utf8')
Ale díky této chybě, kterou neopravují, nezachytí náhradní páry.
Zkuste to v pythonu 2.xa poté v 3.x:
b'\xed\xbd\xbf'.decode('utf8')
V tom druhém vyhodí chybu (správně). Neřeší to ani ve větvi 2.x. Další informace naleznete v [2] a [3]
[1] https://www.rfc-editor.org/rfc/ rfc3629#section-4
[2] http://bugs.python.org/issue9133
[3] http://bugs.python.org/issue8271#msg102209