V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hahahalololo
V2EX  ›  问与答

求助 Python cmd 内中文变问号 求各位大佬看一眼

  •  
  •   hahahalololo · 2019-12-03 11:39:54 +08:00 · 745 次点击
    这是一个创建于 1614 天前的主题,其中的信息可能已经有所发展或是发生改变。

    中文 windows 操作系统中没问题,但在英文操作系统 windows,logging 日志文件里面中文是正常的,但控制台上输出的是问号

    下面为代码:

    import logging
    import os
    import time
    
    
    def set_log(now_path, log_folder_name, log_name):  # 配置日志相关
        try:
            os.makedirs('{}/{}'.format(now_path, log_folder_name))
        except IOError:
            pass
    
        logger = logging.getLogger()
        logger.setLevel('INFO')
        basic_format = '%(asctime)s %(levelname)s:%(message)s'
        date_format = '%Y-%m-%d %H:%M:%S'
        formatter = logging.Formatter(basic_format, date_format)
    
        console_handler = logging.StreamHandler()  # 输出到控制台的 handler
        console_handler.setFormatter(formatter)
        console_handler.setLevel('INFO')  # 也可以不设置,不设置就默认用 logger 的 level
    
        file_handler = logging.FileHandler(filename='{}/{}/{}'.format(
            now_path,
            log_folder_name,
            log_name,
        ),
            encoding='utf8'
        )  # 输出到文件的 handler
        file_handler.setFormatter(formatter)
        logger.addHandler(console_handler)
        logger.addHandler(file_handler)
        logging.info('set log success')
        logging.info('成功')
    
    
    set_log('./', 'MyLog', '{}.log'.format(time.strftime('%Y-%m-%d %H-%M-%M')))
    

    运行后的结果是日志文件内中文没有问题,但 cmd 输出的中文变问号。我尝试给输出到控制台的 handler 添加指定编码,但失败了,网上也没到。

    求各位大佬看下。

    还有,这里不能发图片吗?找了半天没发现添加图片的选项。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1709 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:25 · PVG 08:25 · LAX 17:25 · JFK 20:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.