Rhilip / cn-mooc-dl

Script for downloading MOOCs(Refactoring....)
MIT License
59 stars 29 forks source link

提一个bug #4

Open wby238 opened 7 years ago

wby238 commented 7 years ago

如果保存settings.conf时用了gb2312,运行icourse163-dl时会提示:

Traceback (most recent call last):
  File "G:\git\cn-mooc-dl\icourse163-dl.py", line 215, in <module>
    main(course_url)
  File "G:\git\cn-mooc-dl\icourse163-dl.py", line 11, in main
    config = model.config("settings.conf", "icourse163")
  File "G:\git\cn-mooc-dl\model\config.py", line 36, in load_config
    config.read(config_file, encoding="utf-8-sig")
  File "C:\Program Files\Python36\lib\configparser.py", line 697, in read
    self._read(fp, filename)
  File "C:\Program Files\Python36\lib\configparser.py", line 1015, in _read
    for lineno, line in enumerate(fp, start=1):
  File "C:\Program Files\Python36\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
  File "C:\Program Files\Python36\lib\encodings\utf_8_sig.py", line 69, in _buff
er_decode
    return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 359: invali
d continuation byte
Rhilip commented 7 years ago

这个。。 默认情况下应该时不会对已有的配置文件改编码的吧。而且现在也多用的时utf-8。 到时候会改成usersettings.py的形式来获取cookies等信息(弃用configparser),新的还只是开了个坑,不知道什么时候能push上来。。

wby238 commented 7 years ago

我也没改过对应的编码,只是出问题后去查一下发现settings.conf的编码是gb2312,原因可能是因为你提供的conf的内容全部是ascii,编辑器就默认以ansi的方式打开,再加上我在修改conf的保存路径时用了中文,最后编辑器就默认以ansi的编码保存,结果就变成这样了……或许你可以在注释上面放几个中文字符后以utf-8的方式保存再push。

顺便提个建议: 能不能在创建目录或者文件时在名字前加上序号?毕竟中文数字根本没法排序,而且一些课程章节连中文序号也没有……或者顺便写一份课程的结构当作目录。