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) |