在Python 2.7中,当尝试强制转换类型以确保它与输出模式匹配时,请参阅以下错误。
UnicodeEncodeError:' ascii'编解码器无法对字符进行编码 0:序数不在范围内(128) 试图找到原因并重现木星的错误。只需输入。
str(u'\u2013')
将类型强制转换为可以处理此类错误的字符串的方法是什么?谢谢!
答案 0 :(得分:9)
试试这个:
u'\u2013'.encode('utf-8')
答案 1 :(得分:4)
我会回答我自己的问题。找到一个重复的问题。 stackoverflow.com/questions/9942594 /
但是对于简单,这是一个优雅的解决方案,适用于我的用例:
from random import *
number = 4;
def myFunc(length):
while length > 0:
rndNumber = randint(0, 51)
print('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[rndNumber], end='')
length -= 1
mod = str(myFunc(number))
print (mod)
或者只是使用:
def safe_str(obj):
try: return str(obj)
except UnicodeEncodeError:
return obj.encode('ascii', 'ignore').decode('ascii')
return ""
safe_str(u'\u2013')
答案 2 :(得分:2)
对于2.7.x版,默认情况下不设置编码。 请使用以下代码作为第一行程序
# -*- coding: utf-8 -*-
# Your code goes below this line
它应该可以解决你的问题。
对于python 3.x,有默认编码。因此不存在编码问题。