Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2014 16:30:02

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

Помогите со строками

Написал небольшой парсер почты, столкнулся с такой проблемой: сервер возвращает строку, например такую:

p = u'\xd1\x84\xd0\xbe\xd1\x80\xd1\x83\xd0\xbc\xd0\xb5 \xd0\xbf\xd0\xbe \xd0\xb0\xd0\xb4\xd1\x80\xd0\xb5\xd1\x81\xd1\x83 http://biblioteka.cc/index.php '

Если вы кинете её в консоль, то будет видно, что у строки проблемы. Но, если убрать символ u в начале строки, то проблемы исчезнут. Можно ли это программно находить и исправлять?

Офлайн

#2 Ноя. 27, 2014 19:32:19

Metallikus
Зарегистрирован: 2014-11-26
Сообщения: 39
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите со строками

Вот из-за такого я от python2 и отказался

Офлайн

#3 Ноя. 27, 2014 20:11:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Помогите со строками

pablodiguerero
что у строки проблемы
Это не у строки проблемы а у вас. Чтобы исправить надо понять что вас не устраивает. Исправляется это правильным согласованием кодировок источника и приемника. Обычно добиваются чтобы она правильно перевелась в unicode а потом делают что хотят.



Офлайн

#4 Ноя. 28, 2014 00:26:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите со строками

Неправильно получил юникодовую строку из байтовой строки.

>>> s = '\xd1\x84\xd0\xbe\xd1\x80\xd1\x83\xd0\xbc\xd0\xb5 \xd0\xbf\xd0\xbe \xd0\xb0\xd0\xb4\xd1\x80\xd0\xb5\xd1\x81\xd1\x83 http://biblioteka.cc/index.php '
>>> s
'\xd1\x84\xd0\xbe\xd1\x80\xd1\x83\xd0\xbc\xd0\xb5 \xd0\xbf\xd0\xbe \xd0\xb0\xd0\xb4\xd1\x80\xd0\xb5\xd1\x81\xd1\x83 http://biblioteka.cc/index.php '
>>> ds = s.decode('utf-8')
>>> ds
u'\u0444\u043e\u0440\u0443\u043c\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http://biblioteka.cc/index.php '
>>> print ds
форуме по адресу http://biblioteka.cc/index.php 
>>>



Офлайн

#5 Ноя. 28, 2014 09:01:27

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

Помогите со строками

doza_and
Это не у строки проблемы а у вас. Чтобы исправить надо понять что вас не устраивает. Исправляется это правильным согласованием кодировок источника и приемника. Обычно добиваются чтобы она правильно перевелась в unicode а потом делают что хотят.
Передается она с гугловского imap сервера. Половина писем передается правильно, половина - вот в таком виде. В таком виде они передаются потому что их отправили криво. Кто виноват и что делать?

Отредактировано pablodiguerero (Ноя. 28, 2014 09:02:23)

Офлайн

#6 Ноя. 28, 2014 09:03:25

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

Помогите со строками

Скажем так, на стороне источника проблему решить невозможно. Реально ли с этим разобраться на моей стороне?

Отредактировано pablodiguerero (Ноя. 28, 2014 09:08:54)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version