动机:
s = 诶
这不是ASCII字符,我们需要引发类似以下内容的错误 '字符串诶不能使用ASCII编码
进行编码但是如果我们做类似的事情,
raise UnicodeEncodeError('The string %s cannot be encoded using the encoding
%s',%(s, encoding))
以上内容将引发该错误。 但是,如果我们只是不指定任何编码就这样做:
print(s)
诶
我猜这是因为它只是将字节转储到字符串中。
类似这样也会引起错误:
print ('{}'.format(str(s)))
,下面给出了unicode转换:
print('%s' ,%repr(s))
u'\u8bf6'
有没有办法获取错误输出中的原始文本。
答案 0 :(得分:0)
我假设这是Python 2.7?
尝试一下:
raise UnicodeEncodeError(u'The string %s cannot be encoded using the encoding
%s' %(s, encoding))
关键是u'...'
文字是unicode文字-因此您实际上可以在其中包含unicode字符,而不必尝试将unicode字符编码为ascii。
还请注意,在应用str(s)
时,您会将其转换回ascii。因此,请执行以下操作:
print(u'{}'.format(s))
编辑:@StephenRauch指出,第一个示例(UnicodeEncodeError
)实际上不起作用-修复语法错误后,我将其留在此处...