Skip to content

Instantly share code, notes, and snippets.

@mithro
Created September 14, 2016 03:54
Show Gist options
  • Save mithro/fc7a6fe82ee825e8e09341a32ae0140e to your computer and use it in GitHub Desktop.
Save mithro/fc7a6fe82ee825e8e09341a32ae0140e to your computer and use it in GitHub Desktop.
Python codec/encoding which uses errors='replace' by default rather than errors='strict'
import codecs
def find_utf8_replace(encoding):
"""Return the codec for 'utf8-replace'."""
utf8_codecinfo = codecs.lookup('utf-8')
def wrap(f):
return lambda data, errors='replace', **kw: f(data, errors, **kw)
if encoding == 'utf8-replace':
return codecs.CodecInfo(
name='utf8-replace',
encode=wrap(utf8_codecinfo.encode),
decode=wrap(utf8_codecinfo.decode),
incrementalencoder=None,
incrementaldecoder=None,
streamreader=None,
streamwriter=None,
)
return None
codecs.register(find_utf8_replace)
if __name__ == "__main__":
print(u"\xff".decode('utf8-replace'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment