Python UnicodeEncodeError: 'ascii' codec can't encode character in position 0: 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.
1 | str(u'\u2013') |
如何将类型强制转换为可以处理此类错误的字符串?谢谢!
试试这个:
1 | u'\u2013'.encode('utf-8') |
我会回答我自己的问题。找到一个重复的问题。stackoverflow.com/questions/9942594(堆栈溢出)/
但为了简单起见,这里有一个优雅的解决方案可以很好地与我的用例配合使用:
1 2 3 4 5 6 7 | def safe_str(obj): try: return str(obj) except UnicodeEncodeError: return obj.encode('ascii', 'ignore').decode('ascii') return"" safe_str(u'\u2013') |
或者简单地使用:
1 | u'\u2013'.encode('ascii', 'ignore') |
对于版本2.7.x,默认情况下不设置编码。请使用以下代码作为程序的第一行
1 2 | # -*- coding: utf-8 -*- # Your code goes below this line |
它应该能解决你的问题。
对于python 3.x,有默认编码,因此不会有编码问题。