
1 crb912 2018-05-29 22:26:14 +08:00 via Android 说了半天,上代码和文件的内容啊? 试试: f = open(r'yourFilePath', encoding='某某编码') 如果报 某某编码 can't decde at xx position... 说明文件就不是那个编码。更准确的说,文件中可能使用了其它的编码的字符或符号。 最好的办法,就是用二进制查看工具看下。对于 ASCII,看下是否有超过 127(也就是 16 进制:EF)的,如果有,说明就不是纯 ASCII。 我猜测是这种可能性比较大。 或者文件给我发一份。 |
2 F1024 2018-05-29 22:29:21 +08:00 读取的时候加上编码类型不就行了。 |
3 bearqq 2018-05-29 22:32:31 +08:00 via Android 文件相关用 codecs 库,不要直接 open |
4 meowoo OP @crb912 用的是 logging .config.configfile()打开的一个配置文件 文件保存的是 asciiascii filefile 命令查看是 isoiso 那个类型 这个函数又不能指定编码 所以很纠结 |
6 Sylv 2018-05-30 02:13:38 +08:00 via iPhone 上代码和报错信息,要不然只能瞎猜。 |
8 meowoo OP @Sylv 已经搞定了 就是因为文件不是纯 ascii 而是 iso-8859 但是还有一个问题 就是为啥是默认用 ASCII 去读取 怎么修改呢 |
9 Sylv 2018-05-30 15:43:45 +08:00 via iPhone @meowoo logging.config.fileconfig() 是用 open() 方法来读取文件的,open() 默认使用的编码是 locale.getpreferredencoding(False) 返回的编码,这个编码是由运行环境的语言环境变量判断来的,可能是你机子的语言环境变量没设置好。 或者可以用正确的编码打开文件后,再传给 logging.config.fileconfig(): with open('filename', encoding='utf-8') as f: logging.config.fileconfig(f) |