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

如何在Python字典中存储特殊字符?解决Unicode编码报错问题

解决Python字典存Unicode字符时的UnicodeEncodeError问题

问题根源

这个错误大多出现在把带特殊Unicode字符的内容输出到控制台或写入文件时——Python默认用了系统本地编码(比如Windows下的cp1252或gbk),这些编码覆盖不了所有Unicode字符,自然就编码失败了。

具体解决办法

1. 写入文件时指定UTF-8编码

要是你是把JSON数据写进文件,务必在open()里明确指定encoding='utf-8',还可以加个errors='backslashreplace'兜底(可选,碰到实在编码不了的字符就用转义符代替,避免程序崩掉):

import json

# 示例含特殊Unicode字符的字典
unicode_dict = {"special_char": "𝄞😀𠀋"}

# 指定UTF-8编码写入
with open("output.json", "w", encoding="utf-8") as f:
    json.dump(unicode_dict, f, ensure_ascii=False, indent=2)
  • ensure_ascii=False:让JSON保留原始Unicode字符,不用转成\uXXXX格式;如果需要转义后再比对,把这个参数设为True就行,按需调整。

2. 控制台输出时强制用UTF-8编码

如果是打印到控制台时出错,直接改标准输出的编码为UTF-8:

import sys
import json

unicode_dict = {"special_char": "𝄞😀𠀋"}

# 重置标准输出编码
sys.stdout.reconfigure(encoding='utf-8')
print(json.dumps(unicode_dict, ensure_ascii=False))

或者手动编码后再输出:

print(json.dumps(unicode_dict, ensure_ascii=False).encode('utf-8').decode('utf-8'))

3. JSON转义与比对的注意点

  • 要比对转义后的JSON字符串?确保两边转义规则一致:json.dumps()默认ensure_ascii=True,会把所有非ASCII字符转成\uXXXX格式,这时比对转义后的字符串,不会有编码问题。
  • 其实Python字典本身完全支持存Unicode字符,问题基本都出在输出或者持久化环节,不是字典存储的问题。

验证方式

跑修改后的代码,看看输出文件或控制台能不能正常显示Unicode字符,同时确认不再抛出UnicodeEncodeError就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:02:13