Есть json, прочитал:
with open(name) as f:
data = json.load(f)
data_join = ''
for i in data['rss']['channel']['items']:
data_join += ' ' + i['description']
result = chardet.detect(data_join)
original_text = data_join.decode(result['encoding'])
print(original_text)
Если сделать print(data_join), получаем:
ІЫРбвШ єШЯаР аРббзШвлТРов ЯаШЭпвм ЯЮапФЪР
и т.д.
Если сделать print(ascii(data['rss']['channel']['items'][0])), получаем что-то такое:
\u042c\u042b\u042d \u0432\u0433\u0430\u0428\u0431\u0432\u042e\u0422 \u042f\u042e \u0428\u0432\u042e\u0423\u0420\u042c 2016 \u0423\u042e\u0424\u0420 \
На этапе chardet.detect(data_join) выходит ошибка:
TypeError: Expected object of type bytes or bytearray, got: <class 'str'>
Как исправить на автомате? Не перебором возможных кодировок, а на лету.
locale.getpreferredencoding(). Где вы получили кракозябры (в консоли, в файле -- чем файл открывали)? Какой результат:print(ascii(data['rss']['channel']['items'][0]))? – jfs Oct 23 '17 at 12:56