gpt4 book ai didi

python - logging.StreamHandler 中出现 UnicodeEncodeError

转载 作者:行者123 更新时间:2023-12-05 05:07:53 25 4
gpt4 key购买 nike

我将我的 Python 代码从 Win10 主机迁移到 WS2012R2。令人惊讶的是,它停止正常运行,现在显示警告消息:“UnicodeEncodeError:‘charmap’编解码器无法对位置 0-2 中的字符进行编码:字符映射到”

我尝试执行一个命令:

set PYTHONLEGACYWINDOWSSTDIO=yes

我的代码:

import logging
import sys

def get_console_handler():
console_handler = logging.StreamHandler(sys.stdout)
return console_handler


def get_logger():
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(get_console_handler())
return logger


my_logger = get_logger()
my_logger.debug("Это отладочное сообщение".encode("cp1252"))

我应该怎么做才能摆脱这个警告?

更新同学们,不好意思误导你们了!经过长时间的错误跟踪,我显然很累)问题与这样的“*.encode()”调用无关,它与 IO 控制台操作时的默认 python 编码有关(我想是这样)!原始代码在 cp1251 字符集中从 DB 发出一些请求,但是当 python 尝试将其转换为 cp1252 时出现问题。

这是另一个如何引发错误的示例。

  1. 创建一个纯文本文件,即包含文本“Это отладочное сообщение”的 test.txt 并将其保存为 cp1252。
  2. 运行 python 控制台并输入:
    f = open("测试.txt")
    f.read()

输出:

f = open("test.txt")
f.read()
Traceback (most recent call last): File "<stdin>", line 1, in <module>
File "c:\project\venv\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 29: character maps to <undefined>

最佳答案

使用编码(“utf-8”)。这是 python 编码的列表:https://docs.python.org/2.4/lib/standard-encodings.html

my_logger.debug("Это отладочное сообщение".encode("utf-8"))

然后使用 .decode("utf-8") 查看字符串的可打印值

关于python - logging.StreamHandler 中出现 UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58756276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com