Python UnicodeEncodeError:'ascii'编解码器不能编码位置0的字符:序数不在范围内(128)

Bin*_*Bin 4 python string unicode encoding python-2.7

在Python 2.7中,当尝试强制转换类型以确保它与输出模式匹配时,请参阅以下错误.

UnicodeEncodeError:'ascii'编解码器不能对位置0中的字符进行编码:序号不在范围内(128)试图找到原因并在Jupiter中重现错误.只需输入即可.

str(u'\u2013')
Run Code Online (Sandbox Code Playgroud)

将类型转换为可以处理此类错误的字符串的方法是什么?谢谢!

akh*_*lsp 12

试试这个:

u'\u2013'.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)


Bin*_*Bin 6

我会回答我自己的问题。找到一个重复的问题。stackoverflow.com/questions/9942594/

但是为了简单起见,这是一个优雅的解决方案,可以很好地与我的用例一起使用:

def safe_str(obj):
    try: return str(obj)
    except UnicodeEncodeError:
        return obj.encode('ascii', 'ignore').decode('ascii')
    return ""

safe_str(u'\u2013')
Run Code Online (Sandbox Code Playgroud)

或简单地使用:

u'\u2013'.encode('ascii', 'ignore')
Run Code Online (Sandbox Code Playgroud)