Python и терминал git-bash (ошибка UnicodeEncodeError)

#python #bash #encoding #utf-8

Вопрос:

Я написал один скрипт запроса, который взаимодействует с API, но, когда я запускаю его через терминал git-bash, возникает проблема: исключение UnicodeEncodeError (см. Полную обратную трассировку ниже). Если быть более точным, я использую vim в качестве текстового редактора, поэтому запускаю файлы в другом окне git-bash. Следующий код отлично работает в интегрированном терминале VSCode, но не в git-bash.

Вот мой код:

 import requests
import os


api_key = os.getenv('yandex_praktikum_api_key')


HEADERS = {
    'Authorization': f'OAuth {api_key}'
}


response = requests.get(
    'https://praktikum.yandex.ru/api/user_api/homework_statuses/',
    params={'from_date': 0},
    headers=HEADERS
)


print(response.json()) # Here exception occurs.

 

Вывод терминала Git-bash:

 User@DESKTOP-CVQ282P MINGW64 ~/Desktop
$ python backpool.py
Traceback (most recent call last):
  File "backpool.py", line 20, in <module>
    print(response.json())
  File "D:Python3libencodingscp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 68-74: character maps to <undefined>
 

Вывод терминала VSCode (успешно работает):

 User@DESKTOP-CVQ282P MINGW64 ~
$ D:/Python3/python.exe c:/Users/User/Desktop/backpool.py
{'source': '__response__', 'code': 'not_authenticated', 'message': 'Учетные данные не были предоставлены.'}
 

Настройки кодирования терминала:

 User@DESKTOP-CVQ282P MINGW64 ~/Desktop
$ locale
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=
 

Настройки кодировки Vim:

 " Encoding and backup settings
set nobackup
set noswapfile
set encoding=utf-8
set termencoding=utf-8
set fileencodings=utf-8
 

Комментарии:

1. Вероятно, проблема, связанная с кодовой страницей терминала. Не могли бы вы дать нам значение переменной среды термина для вашего терминала git-bash и вашего терминала VS-кода ? Поскольку библиотека cp1252 используется python с git-bash, похоже, что ваша консоль git-bash-это консоль Windows, не так ли ?