python json load establece la encoding en utf-8

Tengo este codigo

keys_file = open("keys.json") keys = keys_file.read().encode('utf-8') keys_json = json.loads(keys) print(keys_json) 

Hay algunos caracteres que no están en inglés en keys.json. Pero como resultado obtengo:

 [{'category': 'РјР±С‚', 'keys': ['Р'лендер Philips', 'мультиварка Polaris']}, {'category': 'РљР'Рў', 'keys': ['холод ильник атлант', 'посудомоечная машина Bosch']}] 

¿qué debo hacer?

encode significa caracteres binarios . Lo que se desea al leer un archivo es binario para los caracteresdecode . Pero realmente todo este proceso es demasiado manual, simplemente haga esto:

 with open('keys.json', encoding='utf-8') as fh: data = json.load(fh) print(data) 

with mangos de apertura y cierre correctos del archivo, el argumento de encoding que se open para open se lee con la encoding correcta y la llamada de load lee directamente desde el identificador del archivo en lugar de almacenar primero una copia del contenido del archivo en la memoria.

Si esto aún genera caracteres no válidos, significa que su encoding de origen no es UTF-8 o que su consola / terminal no maneja UTF-8.