避免使用UnicodeDecodeError异常Python

时间:2013-12-01 02:47:50

标签: python

在python中,我使用html模板显示Steam播放器的信息。

模板是:

'''<td>
<div>
Name: %s<br>
Hours: %s<br>
<a href="http://steamcommunity.com/profiles/%s" target="_blank">Steam Profile</a> <br>
</div>
</td>'''

所以我有TEMPLATE%(personaName,tf2Hours,id64)

稍后该模板将保存到html文件中。

偶尔会返回UnicodeDecodeError,因为personaName可能包含奇怪的字符。

有没有办法在最终的html文件中保留正确的字符时避免这种情况?

编辑:

错误的原因是非unicode字符。

执行unicode(personaName,errors =&#39;忽略&#39;)解决了这个问题。

1 个答案:

答案 0 :(得分:1)

尝试:

 u'UnicodeTextHereaあä'.encode('ascii', 'ignore')

这将忽略无法转换为ascii的unicode字符。

以下是我刚试过的几个例子。

>>> x = 'Hello world!'
>>> y = 'notあä ascii'
>>> x.encode('ascii', 'ignore')
b'Hello world!'
>>> y.encode('ascii', 'ignore')
b'not ascii'

如您所见,它删除了所有非ascii字符的痕迹。


或者,您可以告诉解释器您正计划读取unicode值。例如(来自docs.python.org/3.3/howto/unicode.html),

with open('unicode.txt', encoding='utf-8') as f:
    for line in f:
        print(repr(line))

这将解释并允许您按原样读取unicode。