Форум сайта python.su
0
Написал небольшой парсер почты, столкнулся с такой проблемой: сервер возвращает строку, например такую:
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 '
Офлайн
1
Вот из-за такого я от python2 и отказался 
Офлайн
253
pablodiguereroЭто не у строки проблемы а у вас. Чтобы исправить надо понять что вас не устраивает. Исправляется это правильным согласованием кодировок источника и приемника. Обычно добиваются чтобы она правильно перевелась в unicode а потом делают что хотят.
что у строки проблемы
Офлайн
857
Неправильно получил юникодовую строку из байтовой строки.
>>> 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 >>>
Офлайн
0
doza_andПередается она с гугловского imap сервера. Половина писем передается правильно, половина - вот в таком виде. В таком виде они передаются потому что их отправили криво. Кто виноват и что делать?
Это не у строки проблемы а у вас. Чтобы исправить надо понять что вас не устраивает. Исправляется это правильным согласованием кодировок источника и приемника. Обычно добиваются чтобы она правильно перевелась в unicode а потом делают что хотят.
Отредактировано pablodiguerero (Ноя. 28, 2014 09:02:23)
Офлайн
0
Скажем так, на стороне источника проблему решить невозможно. Реально ли с этим разобраться на моей стороне?
Отредактировано pablodiguerero (Ноя. 28, 2014 09:08:54)
Офлайн