Python JSON模块赢得';t解析我的Windows-1252字符串

Python JSON模块赢得';t解析我的Windows-1252字符串,python,json,Python,Json,我从服务器上得到一些JSON数据,服务器说是Windows-1252。所以我尝试用这种编码加载它,但得到了ValueError:响应中没有JSON对象可以被解码。我做错了什么?(我意识到它与BOM有关,但这对我没有帮助。) 您有一个Unicode对象,而不是CP-1252字节流 解码失败,因为在开始处有一个字符,可能是使用 如果删除数据,则数据加载不会出现问题: >>> import json >>> my_data = u'\ufeff{"columns":

我从服务器上得到一些JSON数据,服务器说是Windows-1252。所以我尝试用这种编码加载它,但得到了
ValueError:响应中没有JSON对象可以被解码。我做错了什么?(我意识到它与BOM有关,但这对我没有帮助。)


您有一个Unicode对象,而不是CP-1252字节流

解码失败,因为在开始处有一个字符,可能是使用

如果删除数据,则数据加载不会出现问题:

>>> import json
>>> my_data = u'\ufeff{"columns":[{"code":"Region","text":"region","type":"d"},{"code":"Tid","text":"\xe5r","type":"t"},{"code":"BE0101E2","text":"Levande f\xf6dda","type":"c"}],"comments":[],"data":[{"key":["0114","2014"],"values":["485"]}]}'
>>> json.loads(my_data[1:])
{u'data': [{u'values': [u'485'], u'key': [u'0114', u'2014']}], u'comments': [], u'columns': [{u'text': u'region', u'code': u'Region', u'type': u'd'}, {u'text': u'\xe5r', u'code': u'Tid', u'type': u't'}, {u'text': u'Levande f\xf6dda', u'code': u'BE0101E2', u'type': u'c'}]}
您可以有条件地删除它:

if my_data.startswith(u'\ufeff'):
    my_data = my_data[1:]
或者使用正确的编解码器对字节数据进行解码;如果是UTF-8编码,您可以使用
UTF-8-sig
解码并删除BOM


json.load()
无法配置为加载
utf-8-sig
数据;它只会将其视为UTF-8,并且仍然会被BOM绊倒。在这种情况下,您可以先手动解码。

您有一个Unicode对象,而不是CP-1252字节流

解码失败,因为在开始处有一个字符,可能是使用

如果删除数据,则数据加载不会出现问题:

>>> import json
>>> my_data = u'\ufeff{"columns":[{"code":"Region","text":"region","type":"d"},{"code":"Tid","text":"\xe5r","type":"t"},{"code":"BE0101E2","text":"Levande f\xf6dda","type":"c"}],"comments":[],"data":[{"key":["0114","2014"],"values":["485"]}]}'
>>> json.loads(my_data[1:])
{u'data': [{u'values': [u'485'], u'key': [u'0114', u'2014']}], u'comments': [], u'columns': [{u'text': u'region', u'code': u'Region', u'type': u'd'}, {u'text': u'\xe5r', u'code': u'Tid', u'type': u't'}, {u'text': u'Levande f\xf6dda', u'code': u'BE0101E2', u'type': u'c'}]}
您可以有条件地删除它:

if my_data.startswith(u'\ufeff'):
    my_data = my_data[1:]
或者使用正确的编解码器对字节数据进行解码;如果是UTF-8编码,您可以使用
UTF-8-sig
解码并删除BOM


json.load()
无法配置为加载
utf-8-sig
数据;它只会将其视为UTF-8,并且仍然会被BOM绊倒。在这种情况下,您可以先手动解码。

您有一个Unicode对象,而不是CP-1252字节流

解码失败,因为在开始处有一个字符,可能是使用

如果删除数据,则数据加载不会出现问题:

>>> import json
>>> my_data = u'\ufeff{"columns":[{"code":"Region","text":"region","type":"d"},{"code":"Tid","text":"\xe5r","type":"t"},{"code":"BE0101E2","text":"Levande f\xf6dda","type":"c"}],"comments":[],"data":[{"key":["0114","2014"],"values":["485"]}]}'
>>> json.loads(my_data[1:])
{u'data': [{u'values': [u'485'], u'key': [u'0114', u'2014']}], u'comments': [], u'columns': [{u'text': u'region', u'code': u'Region', u'type': u'd'}, {u'text': u'\xe5r', u'code': u'Tid', u'type': u't'}, {u'text': u'Levande f\xf6dda', u'code': u'BE0101E2', u'type': u'c'}]}
您可以有条件地删除它:

if my_data.startswith(u'\ufeff'):
    my_data = my_data[1:]
或者使用正确的编解码器对字节数据进行解码;如果是UTF-8编码,您可以使用
UTF-8-sig
解码并删除BOM


json.load()
无法配置为加载
utf-8-sig
数据;它只会将其视为UTF-8,并且仍然会被BOM绊倒。在这种情况下,您可以先手动解码。

您有一个Unicode对象,而不是CP-1252字节流

解码失败,因为在开始处有一个字符,可能是使用

如果删除数据,则数据加载不会出现问题:

>>> import json
>>> my_data = u'\ufeff{"columns":[{"code":"Region","text":"region","type":"d"},{"code":"Tid","text":"\xe5r","type":"t"},{"code":"BE0101E2","text":"Levande f\xf6dda","type":"c"}],"comments":[],"data":[{"key":["0114","2014"],"values":["485"]}]}'
>>> json.loads(my_data[1:])
{u'data': [{u'values': [u'485'], u'key': [u'0114', u'2014']}], u'comments': [], u'columns': [{u'text': u'region', u'code': u'Region', u'type': u'd'}, {u'text': u'\xe5r', u'code': u'Tid', u'type': u't'}, {u'text': u'Levande f\xf6dda', u'code': u'BE0101E2', u'type': u'c'}]}
您可以有条件地删除它:

if my_data.startswith(u'\ufeff'):
    my_data = my_data[1:]
或者使用正确的编解码器对字节数据进行解码;如果是UTF-8编码,您可以使用
UTF-8-sig
解码并删除BOM


json.load()
无法配置为加载
utf-8-sig
数据;它只会将其视为UTF-8,并且仍然会被BOM绊倒。在这种情况下,您可以先手动解码。

您没有CP-1252字符串。您有一个Unicode字符串。您没有CP-1252字符串。您有一个Unicode字符串。您没有CP-1252字符串。您有一个Unicode字符串。您没有CP-1252字符串。您有一个Unicode字符串。