Код: Выделить всё
import json
str = '{"foo": "bar"}'
encoded_str = str.encode("utf-16be")
decoded_str = encoded_str.decode('utf-8')
print(decoded_str)
print(json.JSONDecoder().decode(decoded_str))
- Зачем кодировать str с помощью utf-16be и декодировать encoded_str с помощью utf -8 не приводит к ошибке?
- Поскольку кодирование и декодирование не приводит к ошибке, и decoded_str< /code> является допустимым JSON (как видно из оператора печати), почему decode(decoded_str) приводит к ошибке?
- Почему запись вывода в файл и просмотр файла с помощью команды less показывают его как двоичный файл?
При использовании команды less для просмотра файла data.txt:
Код: Выделить всё
file = open("data.txt", 'w') file.write(decoded_str)
Код: Выделить всё
"data.txt" may be a binary file. See it anyway?
- Если decoded_str является недопустимым JSON или чем-то еще, как я могу просмотреть его в исходной форме (печатает его как действительный JSON)
Код: Выделить всё
print()
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-cannot-b