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

如何向文本文件写入自定义符号/表情并解决UnicodeEncodeError报错

报错原因

该报错是因为Python打开文件时默认调用了操作系统原生编码(Windows平台下默认为GBK/CP936,也就是报错中提到的charmap编码),这类编码的字符集未覆盖⚡等emoji的编码映射,因此写入时触发编码异常。

注意:你提到的「UTF-8编码会将表情转换为一串普通文本」属于认知误区,该现象是打开文件的编辑器/查看工具不支持emoji渲染导致的展示问题,UTF-8本身会完整保留emoji的Unicode码点,使用支持emoji渲染的工具打开文件即可正常显示表情。

解决方案

方案1(优先推荐):指定UTF-8编码写入文件

打开文件时显式指定encoding="utf-8"即可解决编码不兼容问题,示例代码:

with open("存储文本.txt", "w", encoding="utf-8") as MyTextFile:
    MyTextFile.write("⚡")

如果打开文件时看到的是转义字符/乱码,更换为VS Code、Notepad++等支持emoji渲染的编辑器即可正常查看表情。

方案2(必须使用非UTF-8编码时选择):指定编码错误处理规则

如果业务要求必须使用系统默认编码/其他非UTF-8编码,可在打开文件时通过errors参数指定无法编码字符的处理策略:

  • errors="ignore":直接丢弃所有无法编码的emoji字符
  • errors="replace":用?符号替换所有无法编码的emoji字符
  • errors="backslashreplace":用Unicode转义序列(如\u26a1)替换无法编码的emoji,后续读取文件时可通过解码规则还原为原表情
    示例代码:
# 示例:用?替换无法编码的字符
with open("存储文本.txt", "w", errors="replace") as MyTextFile:
    MyTextFile.write("⚡")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:36:03