user9479535
user9479535

Reputation:

why do i get a decode error when using json load in python?

I try to open a json file but get a decode error. I can't find the solution for this. How can i decode this data?

The code gives the following error:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 3765: invalid start byte

import json
url = 'users.json'
with open(url) as json_data:
     data = json.load(json_data)

Upvotes: 1

Views: 4370

Answers (1)

zarak
zarak

Reputation: 623

That means that the data you're trying to decode isn't encoded in UTF-8

EDIT:

You may decode it before loading it with json using something like this:

with open(url, 'rb') as f:
  data = f.read()
  data_str = data.decode("utf-8", errors='ignore')
  json.load(data_str)

https://www.tutorialspoint.com/python/string_decode.htm

Be careful that you WILL lose some data during this process. A safer way would be to use the same decoding mechanism used to encode your JSON file, or to put raw data bytes in something like base64

Upvotes: 3

Related Questions