Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2008 07:59:04

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Подскажите, проблема с кодировкой, уже просто незнаю что делать…

Читаю текстовый файл в utf-8, вида:
первая строка - index.html
вторая строка - заголовок
третья строка - описание

Заношу эти данные в бд :

id, заголовок, url (papka/index.html), и время

class Packages(models.Model):
id_pkg = models.IntegerField()
title = models.CharField(max_length=300)
url = models.CharField(max_length=100)
folder = models.CharField(max_length=100)
install_date = models.DateTimeField(default=datetime.datetime.now())
дальше во views.py:

pkg = Packages.objects.get(id=id)
return render_to_response(str(pkg.url), {'pkg':pkg})
Выдает ошибку:

UnicodeEncodeError at /kurs/10000004/

('ascii', u'df3/\ufeffindex.html', 4, 5, 'ordinal not in range(128)')

Request Method: GET
Request URL: http://localhost:8000/kurs/10000004/
Exception Type: UnicodeEncodeError
Exception Value:

('ascii', u'df3/\ufeffindex.html', 4, 5, 'ordinal not in range(128)')



Офлайн

#2 Ноя. 14, 2008 09:03:04

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Какая бд?
Какая у неё кодировка?
Какая кодировка проекта?
Как читаете файл?



Офлайн

#3 Ноя. 14, 2008 10:54:44

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Интересно получается, читаю файл, который в utf-8. И к первой прочитанной строчке добавляются левые символы, с остальными все хорошо. Частично проблема решается, если открыть файл через codecs.open в cp1251, но тогда данные в базу не записываются - огибки кодировки. БД - sqlite. Кодировка проекта utf-8.

Пока решил проблему сместив данные на строчку ниже при этом пропускаю первую строку. Но это понятно не дело.

f = open('%s/%s/pack.txt' % (self._into, namepks[i]), 'r')
for line in f.readlines():
lff.append(line.replace('\n',''))
f.close()



Офлайн

#4 Ноя. 14, 2008 11:37:10

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Landing
…И к первой прочитанной строчке добавляются левые символы, с остальными все хорошо. …
Когда то была подобная проблема, решилась тем что все перевел в unicode, и файлы и базу. В начале первой строчки непонятные символы, видимо - BOM. Из всех редакторов что у меня были получилось “срезать” их только Far-ом. Может в твоем редакторе есть опция Сохранить как utf-8 без BOM, или как-то так.



Отредактировано (Ноя. 14, 2008 11:38:41)

Офлайн

#5 Ноя. 14, 2008 12:26:54

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Ага, этот редактор блокнот называется :) База, джанго и файл, все в utf-8 и всеравно такое. Ладно, сделаю первую строку служебной, неприкосновенной :)



Офлайн

#6 Ноя. 14, 2008 14:07:15

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Юникод в бд и в url

Так это BOM наверно. Просто пропускайте эти символы.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version