Python3 中如何将字典中的 Unicode 编码转换为汉字显示

Traceback (most recent call last):
{“person_news”:json.dumps(OrderedDict(sorted(person_news.items())),encoding=“Utf-8”,ensure_ascii=False)}])
File “/usr/lib64/python3.4/json/init.py”, line 237, in dumps
**kw).encode(obj)
TypeError: init() got an unexpected keyword argument 'encoding’


这种格式好像是 python2 的,报错不知道如何处理,求教!
Python3 中如何将字典中的 Unicode 编码转换为汉字显示


9 回复

报错就是没有 encoding 这个参数啊…


在Python 3中,字符串默认就是Unicode编码。如果你字典里的值是\uXXXX这种格式的字符串,那它其实是个普通字符串,不是真正的Unicode对象。你需要把它“解码”成汉字。

最常见的情况是你从某些API或文件里拿到了这种JSON格式的字符串。直接用json.loads()就能自动转好:

import json

# 假设你拿到的是这样的字符串
json_str = '{"name": "\\u738b\\u5927\\u4f73", "city": "\\u5317\\u4eac"}'
data = json.loads(json_str)
print(data)
# 输出:{'name': '王大佳', 'city': '北京'}

如果字典里已经是这种字符串了(比如{'name': '\\u738b\\u5927\\u4f73'}),可以遍历字典用encode().decode('unicode_escape')来转:

def decode_unicode_dict(d):
    decoded = {}
    for key, value in d.items():
        if isinstance(value, str):
            # 处理\uXXXX格式的字符串
            decoded[key] = value.encode('utf-8').decode('unicode_escape')
        else:
            decoded[key] = value
    return decoded

# 示例
my_dict = {'name': '\\u738b\\u5927\\u4f73', 'age': 25}
result = decode_unicode_dict(my_dict)
print(result)  # 输出:{'name': '王大佳', 'age': 25}

简单说就是:JSON数据用json.loads,普通字符串用encode().decode('unicode_escape')处理。

我知道这个参数啊,。我不明白啊

我不是找人给我翻译啊

<br>json.dumps(['汉字'], ensure_ascii=False)<br>

我那个是字典格式,你这里外面还嵌套一个列表?

json.dumps 方法没有 encoding 参数,你直接去掉就好了。。

要学会去看文档:
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)


Python 3 的 json.dumps 返回的是 str 类型的 Unicode 字符串,所以不像 Python 2 需要 encoding 参数。

utf8 编码啊

回到顶部