You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python中codecs.charmap_encode的UnicodeEncodeError错误

UnicodeEncodeError 解决办法

问题背景

运行以下代码时,print语句触发编码错误:

def __on_comment(self, video_id, comment):
        self.producer.send('comments', bytes('{}\t{}'.format(video_id, comment), encoding='utf-8'))
        print(video_id, comment)

错误信息:

line 17, in __on_comment
print(video_id, comment)
File "C:\Users\Hillary\AppData\Local\Programs\Python\Python310\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2764' in position 0: character maps to

原因是Windows默认控制台编码为cp1252,无法识别部分Unicode字符(如示例中的❤️)。

解决方法

1. 给print添加错误处理参数

直接在print时指定无法编码字符的处理逻辑,替换或忽略:

# 用?替换无法编码的字符
print(video_id, comment, errors='replace')

# 或者直接忽略无法编码的字符
# print(video_id, comment, errors='ignore')

2. 强制控制台使用UTF-8编码

在代码开头插入以下代码,重定向标准输出为UTF-8编码:

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

3. 使用支持UTF-8的终端工具

替换默认的cmd终端为Windows Terminal、PowerShell 7+等工具,这些终端默认支持UTF-8编码,不会出现此类问题。


内容的提问来源于stack exchange,提问作者hillz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:36:31