【问题标题】:Python: unicode .encode, can a function be called on unencodable characters?Python:unicode .encode,可以对不可编码的字符调用函数吗?
【发布时间】:2013-05-06 13:01:56
【问题描述】:

我有一个未编码的文本,我想用 latin-1 编码。某些字符无法编码。如果我使用带有“replace”参数的编码,我会得到问题标签字符,但是,有没有办法调用自定义函数来替换字符?

例如,我想将所有可能的字符转换为 latin-1,并对不可编码的字符调用 unidecode.unidecode()。这可能吗?

【问题讨论】:

    标签: python unicode encoding


    【解决方案1】:

    您可以使用codecs.register_error('myerrorhandler', function) 创建自己的错误处理程序。

    >>> import codecs
    >>> codecs.register_error('silly', lambda e: ('X', e.start+1))
    >>> 'foöbar'.encode('ascii', 'silly')
    b'foXbar'
    >>>
    

    【讨论】:

    • 我在使您的代码工作时遇到问题...UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
    • 您使用的是 Python 2 吗?如果是这样,您需要使用 u'foöbar'u'X' 才能使此代码正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多