Приложение Heroku не отображает символы кириллицы с кодировкой UTF-8 по умолчанию

Всем здравствуйте! Я новичок в использовании облачных платформ, таких как Heroku. Я написала на python парсер для сайта и обернула его в telegram бота. Принцип работы бота следующий: пользователь отправляет ссылку и количество страниц, а бот возвращает таблицу с данными из объявлений.

  • Но проблема заключается в том, что при запуске кода в PyCharm все работает, бот отправляет csv файл с информацией на кириллице, но когда бот был загружен на платформу Heroku и был запущен, то начал отправлять непонятные наборы символов, вроде как в кодировке Windows-1250.
  • Для решения проблемы я в настройках heroku config vars поставила LANG = en_US.UTF-8. Не помогло. Записывала encoding = 'utf-8' в конструкциях with open() и csv.writer() - тоже никаких изменений.

Ошибка кроется в неверном понимании кодировки для кириллици и её правильном оформлении конкретно для heroku.

#функция заполняет таблицу информацией из массива массивов items
    def save_file(items):
      with open('cars_tab.csv', 'w', newline='') as file:
        writer = csv.writer(file, delimiter=';')
        writer.writerow(['Марка', 'Ссылка', 'Цена в $', 'Цена в UAH', 'Город'])
        for item in items:
          writer.writerow([item['title'], item['link'], item['usd_price'], item['uah_price'], item['city']])
      return file

Скажите, в чем моя ошибка и как я могу сделать так, чтобы бот отправлял информацию на кириллице? Опишите, пожалуйста, максимально подробно и понятно. Заранее спасибо!


Ответы (1 шт):

Автор решения: Maria

Вот такая некрасивая конструкция решила мою проблему:

     item['city'] = item['city'].encode('cp1251').decode('utf-8')
→ Ссылка