【问题标题】:Unicode encoding issue with Parsing JSON to CSV using csvwriter使用 csvwriter 将 JSON 解析为 CSV 的 Unicode 编码问题
【发布时间】:2017-11-29 17:51:47
【问题描述】:

代码:

with open(read_json,'r',encoding='utf-8') as json_file:

    json_data = json.load(json_file)
    print(json_data)
    with open(write_csv,'w',encoding='utf-8') as csv_file:

        headers, items = parse_json(json_data,query_type)
        # i is to be iterated to get all maxResults = 50.
        writer = csv.writer(csv_file)
        writer.writerow(headers)
        for row in items:
            writer.writerow(row)

CSV 文件:

我的 CSV 文件中有奇怪的字符,不确定发生了什么。

【问题讨论】:

  • 这是 UTF-8 多字节字符显示为错误的代码页,如果在 Windows 上可能是 cp1252。您是在 Excel 还是记事本中查看 CSV?使用utf-8-sig 作为编码应该可以解决这个问题。
  • @MarkTolonen 我正在使用 excel
  • @MarkTolonen 非常感谢你,你能解释一下出了什么问题吗,我是编程新手。

标签: python json csv unicode


【解决方案1】:

Windows 应用程序通常假定文本文件以 ANSI 编码进行编码,该编码因本地​​化 Windows 版本而异。 Windows-1252 是美国 Windows 使用的编码。

Excel 也做出此假设,但如果它看到 UTF8 BOM 签名,它将使用 UTF8 进行编码。使用文件编码utf-8-sig 编写此签名。如果用于打开文件进行读取,它会识别并丢弃签名,因此不会影响您的 Python 代码。

因此,请改用utf-8-sig 为 Excel 提供所需的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2022-01-01
    • 2017-01-17
    • 1970-01-01
    • 2018-07-31
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多