Python 加载json文件并在UTF-16中解码

Python 加载json文件并在UTF-16中解码,python,json,unicode,arabic,utf,Python,Json,Unicode,Arabic,Utf,这是一种更好的表达我的问题的方式: 我试图从python 2.7中的.json.gz文件中读取utf-16字符(英语和阿拉伯语) 我编写的代码行读取了utf-8字符: 导入全局 导入json 导入gzip 打印(“读取输入JSON文件”) 对于glob.glob(“*api*.json.gz”)中的文件名: 使用gzip.open(文件名,'r')作为f: data=json.load(f.read().decode('utf-8')) 我尝试将utf-8简单替换为utf-16,但出现以下错误

这是一种更好的表达我的问题的方式:

我试图从python 2.7中的
.json.gz
文件中读取
utf-16
字符(英语和阿拉伯语)

我编写的代码行读取了
utf-8
字符:

导入全局
导入json
导入gzip
打印(“读取输入JSON文件”)
对于glob.glob(“*api*.json.gz”)中的文件名:
使用gzip.open(文件名,'r')作为f:
data=json.load(f.read().decode('utf-8'))
我尝试将
utf-8
简单替换为
utf-16
,但出现以下错误:

ValueError:无法解码任何JSON对象


任何帮助都将不胜感激

将编码指定为
open()
的一部分。这是一个“往返演示”:


正如在注释中提到的,仅仅因为数据最初是UTF-16编码的,您并不意味着要以相同的编码将其写回CSV。您可以完全自由地使用UTF-16加载和解码,但可以使用UTF-8进行写入。

CSV文件是纯文本文件。他们不需要UTF16。就像任何其他文本文件一样,它们可以采用任何文本编码。在任何情况下,当您调用
decode
时,都需要指定源代码的编码。如果该源使用UTF7,则不能使用
utf-16
。如果你想将文本保存到CSV文件中,你应该在将文本写入文件时指定编码。我不会对CSV做出任何声明,除非它是基于文本的,具有行和列。预期的编码取决于实际的味道,在编写或阅读之前,您必须知道实际的味道。这就是说,JSON确实构建在Unicode上,通常表示为UTF-8或ASCII(使用JSON Unicode转义码)。无论哪种情况,你的问题都不够清晰。请摘录a,并在问题中包括预期和实际输出。
>>> import json
>>> data = {
...     "title": "قالت وزارة الداخلية المصرية إن كمية من المتفجرات في سيارة كانت معدة لتنفيذ عملية إرهابية أدت إلى الانفجار الذي وقع وسط القاهرة وأودى بحياة نحو 20 شخصا."
... }
>>> with open("/tmp/utf16demo.json", "w", encoding="utf-16") as f:
...     json.dump(data, f)
>>> with open("/tmp/utf16demo.json", encoding="utf-16") as f:
...     newdata = json.load(f)
>>> next(iter(newdata.values())) == next(iter(data.values()))
True