Найти - Пользователи
Полная версия: Проблема с кодировкой
Начало » Django » Проблема с кодировкой
1
barabansheg
Питон 2.7. Парсю сайт, юзая lxml
Пишу следующее:
categs = urllib.urlopen(url)
doc = lxml.html.document_fromstring(categs.read().decode('utf-8'))
categs = doc.cssselect('.submenu a') # список категорий
for cat in categs:
    title = cat.text.title()
    print title # все ок, выводится как надо. без абракадабры
    print cat.get('href') # если в ссылке есть русские символы - выводит абракадабру. Что забыл?
Пробовал cat.get('href').decode('utf-8') ругается на русский символ, что это не ascii
JOHN_16
barabansheg
categs = urllib.urlopen(url)
а вы уверены что содержащийся по урл документ использует UTF-8 кодировку?
barabansheg
Я думаю <meta charset=“UTF-8”> об этом говорит. Плюс, если убрать decode после categs.read() то print title будет выдавать абракадабру.
barabansheg
Не знаю как решить. Пропустил ту ссылку и все :) Но возник другой вопрос.
Я считываю имя папки с помощью dirs = os.listdir(dir), для каждой папки внутри dir нужно создать экземпляр модели, но когда я пишу
m = Material(
                    title = dirs[0], #имя папки
                     )
m.save()
              
то выдается ошибка: Warning: Incorrect string value: ‘\xD0\x92\xD0\xB5\xD0\xBB…’ for column ‘title’ at row 1
Если делаю a.decode('utf-8') то, тоже самое. Если unicode(a), то UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
Операционка - линукс и у меня 100% утф-8 :)

PS. Такая фигня даже если написать title=u'Папка', ругается на строку. Выполняю скрипт из manage.py shell

PPS. Проблема решена. Не углядел в БД. Таблица была другой кодировки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB