【问题标题】:How to decode json array to utf-8? [duplicate]如何将 json 数组解码为 utf-8? [复制]
【发布时间】:2014-12-25 11:30:07
【问题描述】:

我想运行这个代码块:

>>> json1 = json.loads("""[{"categoryId":"32","nameAr":"\u0627\u0643\u0644 \u0633\u0631\u064a\u0639","nameEn":"Fast Food"}]""")
>>> file1 = open("test.csv","w")
>>> fieldnames = json1[0].keys()
>>> writer = csv.DictWriter(file1, fieldnames=fieldnames)
>>> writer.writeheader()
>>> writer.writerow(json1[0])

但我收到此错误:'ascii' codec can't encode characters in position 0-2,我认为这是因为我应该将 json1 值编码为 utf-8 ,我该怎么做?

【问题讨论】:

  • 这与 JSON 编码无关,而是与您写入数据的方式有关。该文件配置为使用 ASCII 编码,由于 JSON 包含非 ASCII 字符,因此该编码不起作用。您也许可以告诉 JSON 编码器转义那些,以便只使用 ASCII 或更改文件编码。
  • UTF-8解码,encode到UTF-8。
  • 是重复的,只改一行writer.writerow({k.encode('utf8'): v.encode('utf8') for k, v in json1[0].iteritems()})
  • @jamylak 谢谢你,这就是我正在寻找的 :)

标签: python json python-2.7 python-3.x encode


【解决方案1】:

使用 unicode csv 库

writer = unicodecsv.DictWriter(file1, fieldnames=fieldnames)

如果您没有它,请使用 pip 或 easy_install 安装它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 2016-05-11
    • 2021-10-13
    • 2018-11-17
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多