首页 > 解决方案 > 如何捕获作为打印输出的字符串

问题描述

动机:

s =  诶

这不是一个 ASCII 字符,我们需要抛出一个错误,比如 'The string eh cannot be encoding using the encoding 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'

有没有办法获取错误输出中的原始文本。

标签: pythonstringunicodeencodenon-ascii-characters

解决方案


我假设这是 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))

编辑:第一个示例 ( UnicodeEncodeError) 实际上不起作用,正如@StephenRauch 指出的那样-修复语法错误后,我将其留在此处...


推荐阅读