网上很多博客写的调整活动代码页编号。chcp 936(GBK)或者 chcp 65001 utf-8格式
然而并没有什么卵用。
因为,如果没有特殊指定logging写入的日志文件编码,默认是GB2312,
所以以上两种格式设置均不行
所以还是要从根源上解决问题,还需指定日志文件的编码格式
方式1:
root_logger= logging.getLogger()
root_logger.setLevel(logging.DEBUG) # or whatever
handler = logging.FileHandler('test.log', 'w', 'utf-8') # or whatever
handler.setFormatter(logging.Formatter('%(name)s %(message)s')) # or whatever
root_logger.addHandler(handler)
方式2:
import logging, os
file_path = os.path.dirname(os.path.realpath(__file__))
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)s:%(levelname)s:%(message)s',
datefmt='%F %A %T',
handlers=[logging.FileHandler(os.path.join(file_path, 'log.txt'), encoding='utf-8', mode='a+'),
logging.StreamHandler()] ##到标准输出
)
更新:在Python 3.9及更高版本中,basicConfig()具有encoding和errors关键字参数。
参考: https://stackoverflow.com/questions/10706547/add-encoding-parameter-to-logging-basicconfig