python - exceptions.UnicodeDecodeError'ascii'编解码器无法解码字节

  显示原文与译文双语对照的内容
0 0

我一直在犯这个错误:


<type 'exceptions.UnicodeDecodeError'>: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
 args = ('ascii', 'xe2x9dxb6 Senn =)', 0, 1, 'ordinal not in range(128)')
 encoding = 'ascii'
 end = 1
 message = ''
 object = 'xe2x9dxb6 Senn =)'
 reason = 'ordinal not in range(128)'
 start = 0

使用以下代码:


 steamFriend = data['response']['players'][i]
 n = steamUser(steamFriend['personaname'].encode("utf-8"), steamFriend['steamid'], steamFriend['avatarfull'], steamFriend['profileurl'], steamFriend['personastate'], False)

这里需要注意的一些事项:

  • steamFriend 是一个JSON对象

任何帮助都非常有用。 另外,xe2x9dxb6 Senn =) 应该代表 ❶ Senn =),如果有帮助的话。

时间: 原作者:

0 0

没有看到完整的代码,很难说明,但看起来steamUser需要ascii输入。 如果存在问题,你可以通过以下方式解决它:


streamFriend['personaname'].encode("ascii", errors="ignore")

或者


streamFriend['personaname'].encode("ascii", errors="replace")

很明显,进程中会丢失unicode字符。

0 0

如果在 n=... 行中出现引用错误,则表明 steamFriend['personaname'] 是一个字节字符串,而不是Unicode字符串。

因此,为了使 .encode 为 Unicode,python 必须将字符串 ,以便能够将代码back字节code字节。 隐式解码发生在使用ASCII的默认编码,因为字节字符串不包含只有ASCII的字符串。

你确定你不打算这样做:


steamFriend['personaname'].decode("utf-8")

( 通常,JSON字符串是显式的Unicode,所以不清楚从哪里获取字节字符串) 。 你如何加载JSON内容)?

原作者:
...