@ZakirovRK

Проблемы с кодировкой. Как решить?

Добрый день, прошу вашей помощи!
Использую python3.X. и пытаюсь вытянуть геокод адреса, с помощью Яндекс.карт.
Если указан адрес на английском, то проблем не возникает.

import urllib.request


def get_html(url):
    response = urllib.request.urlopen(url)
    return response.read()

yandex = 'https://geocode-maps.yandex.ru/1.x/?format=json&geocode=Moscow, Sretenka 8'
get_html(yandex).decode('utf-8')


Но стоит заменить "Moscow, Sretenka 8" на "Москва, Сретенка 8", выдает ошибку, связанную с кодировкой.
Нашел статью https://habrahabr.ru/post/135913/ , но ясности она не принесла.
Я не понимаю проблему, Python3 работает по дефолту с utf-8. Почему же возникает проблема с русскими буквами?
  • Вопрос задан
  • 815 просмотров
Решения вопроса 1
@javedimka
Хочу сока
from urllib.parse import quote
from urllib import request


def get_html(url):
    response = request.urlopen(url)
    return response.read()

yandex_ru = "https://geocode-maps.yandex.ru/1.x/?format=json&geocode={0}"

get_html(yandex_ru.format(quote("Москва, Сретенка 8"))).decode("utf-8")


Все лавры werevolff - Кириллица в url Python 3, как преобразовать в url?

https://docs.python.org/3/library/urllib.parse.htm...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
1) Ошибку в студию
2) Методы как решали - тоже желательно сюда
3) Как вы задаете русский адрес? Напрямую в переменную пишете? Надо тогда указывать кодировку в начале файла (stackoverflow.com/questions/3198765/how-to-write-r... ). А вообще - привыкайте сразу к хорошему - вынесите адрес в конфиг, например. И проблема решится сразу.
Ответ написан
Sly_tom_cat
@Sly_tom_cat
.
а точно вы 3-й питон вызываете?

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
есть такое в начале файла?

ну и даже во втором должно пройти нормально с # -*- coding: utf-8 -*- и перфиксом u перед строкой: т.е:
yandex = u'https://geocode-maps.yandex.ru/1.x/?format=json&ge..., Сретенка 8'
Ответ написан
Ваш ответ на вопрос

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

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