【发布时间】:2016-03-31 14:53:45
【问题描述】:
我正在尝试从网上抓取一篇文章并将其写入数据库。
如果我这样做
article = article.decode('utf-8')
我明白了:
'ascii' codec can't decode byte 0xc3 in position 25729: ordinal not in range(128)
如果我这样做
article = article.encode('utf-8')
我明白了:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 5409: ordinal not in range(128)
如果我这样做
article = article.encode('utf-8').decode()
或者这个
article = article.decode().encode('utf-8')
我还是明白了
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 5409: ordinal not in range(128)
问题:
对于解决此问题的任何帮助将不胜感激!
编辑:Stackoverflow 推荐了一篇文章,上面说 do .encode('utf-8') ,这不起作用,错误仍然存在。
【问题讨论】:
-
你能升级到 Python 3.x 吗?
article的类型是什么? -
我可能会升级到 3.x,需要弄清楚如何(我不是一个新手,但几乎是)......这篇文章是一篇关于电子音乐的博客文章,一个提示和技巧贴。
-
我下载了python3,并将shebang #!/usr/bin/python3添加到我的脚本中,并继续得到错误UnicodeDecodeError:'ascii'编解码器无法解码位置5409的字节0xc4:序数不在范围内(128)
-
您不能只是开始到处乱扔
encode和decode并期望一切正常 - 您需要了解您在做什么。首先,并非所有网页都具有相同的编码,因此您必须处理它,除非您使用的包已经将页面解码为 Unicode 字符串。你需要知道你从什么开始,你需要以什么结束! -
你不能只在任意 Python 对象上调用
.encode()/.decode()并希望它能正常工作。您的问题至少缺少type(article)。提供minimal but complete code example that shows your issue 和相应的完整回溯(按原样复制粘贴)。
标签: python python-2.7 unicode encoding