Найти - Пользователи
Полная версия: Юникод в бд и в url
Начало » Django » Юникод в бд и в url
1
Landing
Подскажите, проблема с кодировкой, уже просто незнаю что делать…

Читаю текстовый файл в 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)')
Александр Кошелев
Какая бд?
Какая у неё кодировка?
Какая кодировка проекта?
Как читаете файл?
Landing
Интересно получается, читаю файл, который в 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()
timas
Landing
…И к первой прочитанной строчке добавляются левые символы, с остальными все хорошо. …
Когда то была подобная проблема, решилась тем что все перевел в unicode, и файлы и базу. В начале первой строчки непонятные символы, видимо - BOM. Из всех редакторов что у меня были получилось “срезать” их только Far-ом. Может в твоем редакторе есть опция Сохранить как utf-8 без BOM, или как-то так.
Landing
Ага, этот редактор блокнот называется :) База, джанго и файл, все в utf-8 и всеравно такое. Ладно, сделаю первую строку служебной, неприкосновенной :)
Александр Кошелев
Так это BOM наверно. Просто пропускайте эти символы.
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