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 caracteres → decode
. 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.