Python UnicodeEncodeError: 'ascii'编解码器无法编码位置为0的字符:ordinal not in range(128)。

28 浏览
0 Comments

Python UnicodeEncodeError: 'ascii'编解码器无法编码位置为0的字符:ordinal not in range(128)。

这个问题已经有答案了:

UnicodeEncodeError: \'ascii\' codec can\'t encode character u\'\\xa0\' in position 20: ordinal not in range(128)

在Python 2.7中,当试图将类型转换以确保它与输出模式匹配时,会出现以下错误。

UnicodeEncodeError: \'ascii\' codec can\'t encode character in position

0: ordinal not in range(128)

Tried to find why and reproduced the error in Jupiter. By simply typing in.

str(u'\u2013')

有什么方法可以将类型转换为可以处理这种类型错误的字符串吗?谢谢!

admin 更改状态以发布 2023年5月22日
0
0 Comments

我将回答我自己的问题。发现了一个重复的问题。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')

或者简单地使用:

u'\u2013'.encode('ascii', 'ignore')

0
0 Comments

试试这个:

u'\u2013'.encode('utf-8')

0