Задать вопрос
@Georgy123

Как решить проблему с кодировкой?

def write_json(data):
    with open('posts.json','w') as file:
        json.dump(data, file, indent=2, ensure_ascii=False)


def main():
	#https://api.vk.com/method/wall.get?user_id=210700286&v=5.52

    group_id='-30666517'
    r= requests.get('https://api.vk.com/method/wall.get', params={'owner_id':group_id, 'count':100, 'offset':0})
    write_json(r.json())


if __name__ == '__main__':
	main()


С помощью этого я по мысли должен получать запись информации о стене группы в файл,но интерпретатор выдает следующее: return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0306' in position 38: character maps to

Как это можно исправить ?
Заранее спасибо
  • Вопрос задан
  • 5866 просмотров
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
тут проверяеешь
https://www.artlebedev.ru/tools/decoder/
CP1252 - CP1251

находишь оригинал, декодишь
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bergsoft
@bergsoft
Web development using the framework Django/Python
import json
import codecs

def write_json(data):
    with codecs.open('your_file.txt', 'w', encoding='utf-8') as file:
        json.dump(data, file, indent=2, ensure_ascii=False)
Ответ написан
Я не понял где ошибка, но судя по коду она может быть в месте получения json-ответа.

#посмотреть угаданную автоматом кодировку
print(r.encoding)       

# установить реальную кодировку (какая там - я не знаю, cp1251 написал просто так)
r.encoding = 'cp1251'   

text = r.text
data = json.loads(text)
write_json(data)


Хотя может у вас ошибка в json.dump? В этом случае у вас, скорее всего, кодировка выходного файла не utf-8 и надо просто
with open('posts.json', 'w', encoding='utf-8') as file:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы