【问题标题】:Python JSON Unicode Error OrderedDictPython JSON Unicode 错误 OrderedDict
【发布时间】:2015-01-30 22:41:02
【问题描述】:

我希望能够在编辑器中查看文件并自动看到一个 ü。

# -*- coding: utf-8 -*-
import json
from collections import OrderedDict

fdata = OrderedDict()
fdata[u"Züge"] = 0
fdata[u"Bahnhöfe"] = 0

with open("Desktop/test.json", "w") as outfile:
    json.dump(fdata, outfile, indent=2, ensure_ascii=False)

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in 位置 2:序数不在范围内(128)

它与 OrderedDict 有关,使用普通的 dict 即可。

【问题讨论】:

  • 异常仅在运行时发生还是您也难以在文本编辑器中显示字符?
  • 当我尝试 json.dumps() 时发生
  • 你能告诉我们打开“文件”的代码吗?你指定了编码吗?

标签: python json python-2.7


【解决方案1】:

打开文件时没有指定编码,所以outfile.encoding可能是None

file.encoding

此文件使用的编码。当 Unicode 字符串 被写入文件,它们将使用转换为字节字符串 这种编码。此外,当文件连接到终端时, 该属性给出了终端可能使用的编码 (如果用户配置错误,该信息可能不正确 终端)。该属性是只读的,可能并不存在于所有 类似文件的对象。 也可能是 None,在这种情况下文件使用 用于转换 Unicode 字符串的系统默认编码。

而且你的系统默认编码显然是 ascii。

改为使用所需的编码打开文件:

import codecs
  with codecs.open("test.json", "w", encoding='utf-8') as outfile:

【讨论】:

    【解决方案2】:

    我曾经遇到过类似的问题,我在 .py 文件的顶部添加了这一行并且它有效。

    # coding=utf-8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      相关资源
      最近更新 更多