你的问题是这不是UTF-8。你有UTF-16编码数据,对其进行解码:
>>> data = b'\xff\xfe{\x00 \x00\r\x00\n\x00"\x00i\x00d\x00"\x00 \x00:\x00 \x00"\x001\x004\x000\x004\x008\x003\x000\x000\x006\x004\x006\x009\x006\x00"\x00,\x00\r\x00\n\x00"\x00t\x00i\x00t\x00l\x00e\x00"\x00 \x00:\x00 \x00"\x00\xe4\x05\xd9\x05\xe7\x05\xd5\x05\xd3\x05 \x00\xd4\x05\xe2\x05\xd5\x05\xe8\x05\xe3\x05 \x00\xd4\x05\xea\x05\xe8\x05\xe2\x05\xd4\x05 \x00\xd1\x05\xde\x05\xe8\x05\xd7\x05\xd1\x05 \x00"\x00,\x00\r\x00\n\x00"\x00d\x00a\x00t\x00a\x00"\x00 \x00:\x00 \x00[\x00]\x00\r\x00\n\x00}\x00\r\x00\n\x00\r\x00\n\x00'
>>> data.decode('utf16')
'{ \r\n"id" : "1404830064696",\r\n"title" : "פיקוד העורף התרעה במרחב ",\r\n"data" : []\r\n}\r\n\r\n'
>>> import json
>>> json.loads(data.decode('utf16'))
{'title': 'פיקוד העורף התרעה במרחב ', 'id': '1404830064696', 'data': []}
如果您从网站加载此内容urllib.request
, the Content-Type
header should包含一个charset
参数告诉你这一点;如果response
是返回的urllib.request
响应对象,然后使用:
codec = response.info().get_content_charset('utf-8')
没有时默认为 UTF-8charset
参数已设置,这是 JSON 数据的适当默认值。
或者,使用requests library https://requests.readthedocs.io/为了加载 JSON 响应,它会自动处理解码(包括特定于 JSON 响应的 UTF 编解码器自动检测)。
进一步说明:PEP 263源代码编解码器注释 http://www.python.org/dev/peps/pep-0263/用来only解释您的源代码,包括字符串文字。它与外部源(文件、网络数据等)的编码无关。