Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2012 16:10:34

an1s1
Зарегистрирован: 2012-08-15
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

Есть сайт, на котором лежит страница, но вот ее название в русской раскладке(UTF8), на что URLopen говорит, мол незя, не вмещается в 128 значений ASCII. Что с этим делать? Заранее благодарен.

Офлайн

#2 Авг. 15, 2012 16:11:51

an1s1
Зарегистрирован: 2012-08-15
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

File "***\parser.py", line 25, in getPageText
    return str(urlopen(url).readall())
  File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python32\lib\urllib\request.py", line 369, in open
    response = self._open(req, data)
  File "C:\Python32\lib\urllib\request.py", line 387, in _open
    '_open', req)
  File "C:\Python32\lib\urllib\request.py", line 347, in _call_chain
    result = func(*args)
  File "C:\Python32\lib\urllib\request.py", line 1156, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Python32\lib\urllib\request.py", line 1136, in do_open
    h.request(req.get_method(), req.selector, req.data, headers)
  File "C:\Python32\lib\http\client.py", line 964, in request
    self._send_request(method, url, body, headers)
  File "C:\Python32\lib\http\client.py", line 992, in _send_request
    self.putrequest(method, url, **skips)
  File "C:\Python32\lib\http\client.py", line 856, in putrequest
    self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-11: ordinal not in range(128)

Офлайн

#3 Авг. 15, 2012 16:18:46

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

response = urlopen()
response.decode()

Или у вас в урле юникод? Тогда http://python.su/forum/topic/6750/



Отредактировано fata1ex (Авг. 15, 2012 16:21:33)

Офлайн

#4 Авг. 15, 2012 16:20:52

an1s1
Зарегистрирован: 2012-08-15
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

fata1ex
response = urlopen()
response.decode()
Не-а, проблема, судя по всему, при декодировании url
File "***\parser.py", line 25, in getPageText
    return str(urlopen(url).decode())
  File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python32\lib\urllib\request.py", line 369, in open
    response = self._open(req, data)
  File "C:\Python32\lib\urllib\request.py", line 387, in _open
    '_open', req)
  File "C:\Python32\lib\urllib\request.py", line 347, in _call_chain
    result = func(*args)
  File "C:\Python32\lib\urllib\request.py", line 1156, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Python32\lib\urllib\request.py", line 1136, in do_open
    h.request(req.get_method(), req.selector, req.data, headers)
  File "C:\Python32\lib\http\client.py", line 964, in request
    self._send_request(method, url, body, headers)
  File "C:\Python32\lib\http\client.py", line 992, in _send_request
    self.putrequest(method, url, **skips)
  File "C:\Python32\lib\http\client.py", line 856, in putrequest
    self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-11: ordinal not in range(128)

Отредактировано an1s1 (Авг. 15, 2012 16:21:08)

Офлайн

#5 Авг. 15, 2012 16:23:13

an1s1
Зарегистрирован: 2012-08-15
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

Попробывал так:

>>>page=getPageText("***/Опт".encode("ascii"))
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    page=getPageText("***/Опт".encode("ascii"))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 30-36: ordinal not in range(128)

Отредактировано an1s1 (Авг. 15, 2012 16:23:29)

Офлайн

#6 Авг. 15, 2012 16:45:45

an1s1
Зарегистрирован: 2012-08-15
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

[Python 3] URLopen и UTF8 пути

fata1ex
response = urlopen()
response.decode()

Или у вас в урле юникод? Тогда http://python.su/forum/topic/6750/
Не сразу приметил, спасибо, оно.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version