请叫我江同学呀 2023-01-22 19:37 采纳率: 55.6%
浏览 43
已结题

pycharm命令行输出乱码

pycharm命令行输出乱码

我使用logging打印日志,使用utf-8编码,结果命令行打印出来的汉字乱码。通过测试,我发现当我使用gbk编码时可以正常输出汉字,但是如果我改成utf-8,则会出现乱码,那么我该如何修改,才能使我可以使用utf-8编码?
        rotating_file_handler = RotatingFileHandler(
            filename="./logs/log.log", mode="a", maxBytes=1000000, backupCount=100)
        rotating_file_handler.setLevel(level=logging.WARNING)       # 保存到日志文件的日志等级
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(logging.INFO)                       # 打印在命令行的日志等级
        logging.basicConfig(
            level=logging.INFO,
            format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",
            handlers=[rotating_file_handler, stream_handler]
        )
        asyncqt_logger = logging.getLogger('asyncqt')
        asyncqt_logger.setLevel(logging.WARNING)
        logging.info("初始化日志完成。")

img

img

我使用这样的设置的时候,命令行输出都是正常的

在这里插入图片描述

在这里插入图片描述

  • 写回答

3条回答 默认 最新

  • a7464553 2023-01-22 20:03
    关注

    上面这段代码中,可以看到stream_handler是用来打印在命令行的日志的,所以我们可以把它的编码设置为utf-8,代码如下:
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.INFO)
    stream_handler.setFormatter(logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', encoding='utf-8'))

    然后在basicConfig中把stream_handler加入到handlers中即可,修改后的代码如下:
    logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",
    handlers=[rotating_file_handler, stream_handler]
    )

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月28日
  • 已采纳回答 6月28日
  • 修改了问题 1月22日
  • 创建了问题 1月22日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器