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