Python Youtube API: UnicodeEncodeError: кодек 'charmap' не может кодировать символ '\ u279c' в позиции 7741: сопоставление символов с <undefined>

Я пытаюсь использовать API Youtube в Python, вот мой код:

import googleapiclient.errors
import googleapiclient.discovery
import os
from googleapiclient.discovery import build

api = '*******************************************'


def main():
    api_service_name = "youtube"
    api_version = "v3"
    client_secrets_file = "YOUR_CLIENT_SECRET_FILE.json"

    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, developerKey=api)

    request = youtube.search().list(
        part = "snippet",
        maxResults=25,
        q = "star wars"
    )
    response = request.execute()

    print(response)


if __name__ == "__main__":
    main()

Это должно отправить запрос на результаты поиска по запросу «звездные войны», но вместо этого я получаю ошибку в заголовке. Использование поискового запроса по умолчанию «surfing», кажется, работает, но все остальное не работает. Если это важно, я использую Windows и текстовый редактор Atom.

Вместо этого попробуйте print(json.dumps(response, ensure_ascii = True)). (Конечно, тоже есть import json.)

stvar 18.12.2020 19:12

Это сработало, спасибо!

Adrian Russo 18.12.2020 19:29

Причина вашей проблемы в том, что ваш терминал Windows не может отображать кодовую точку Unicode U+279C. Если вы посмотрите внимательно, в выводе терминала этот символ должен быть экранирован как \u279c (и аналогично все другие символы, отличные от ASCII, если на то пошло).

stvar 18.12.2020 19:31

Теперь я понимаю, это имеет смысл.

Adrian Russo 18.12.2020 19:42
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
194
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я хотел бы добавить ответ на этот вопрос для тех, у кого есть аналогичная проблема. Самое простое решение (как ответил stvar):

Вместо этого попробуйте print(json.dumps(response, ensure_ascii = True)). (Конечно, тоже есть import json.)

Терминал Windows не может отображать определенные символы, поэтому ASCII устранил эту проблему.

Другие вопросы по теме