Xia*_* Li 5 python raspberry-pi
我想使用 Python 从网站下载所有图片。我已经有了HTML文件的标题,所以我用os.mkdir()创建了一个文件夹,但是标题包含中文。在树莓派(OS:Debian)上执行以下代码时,出现异常:
UnicodeEncodeError: 'ascii' 编解码器无法对位置 20-38 中的字符进行编码:序号不在范围内 (128)
try:
os.mkdir(path)
except:
print "create folder failed"
continue
Run Code Online (Sandbox Code Playgroud)
如果我在 Mac 上运行代码,一切都很好。
我用谷歌搜索了这个问题并尝试了下面的代码,但它不起作用。
reload(sys)
sys.setdefaultencoding('utf-8')
Run Code Online (Sandbox Code Playgroud)
更新:
我对代码进行了大量更改,并阅读了一些有关 unicode、utf-8 等的文章。但是每次我在 Raspberry Pi 上运行代码时,它都会崩溃。然后我在 PC 上安装了 Debian 操作系统(这是我在 Raspberry Pi 上安装的),在其上运行代码,一切正常。
所以问题其实不是代码引起的,而是SSH引起的。
如果我在桌面环境下的 Debian PC 上直接运行代码,则可以。如果我使用 SSH 从我的 Mac 登录到 shell 并运行代码,则会出现一个类似“Unicode....”的异常。
我认为这是由环境变量引起的,我明天会尝试弄清楚,谢谢你们:-)
Nik*_*ita -1
也许您正在使用 Python 2,请尝试在脚本的最顶部添加以下代码,看看它是否有效:
from __future__ import unicode_literals
Run Code Online (Sandbox Code Playgroud)
并且不要忘记删除 2 行sys。
默认情况下,这将在脚本中的任何位置启用 unicode 字符串,因此作为结果获取或显式定义(即使没有u)的任何字符串都s="string"将是 unicode 字符串,因此将支持中文字符。