Найти - Пользователи
Полная версия: проблема с кодировкой в темплейте.
Начало » Django » проблема с кодировкой в темплейте.
1
pochechyev
есть список page
page[1]='\xc4\xe2\xe0 \xf1\xee\xee\xe1\xf0\xe0\xe6\xe5\xed\xe8\xff'
передаю в темплейт весь список и в самом темплейте пишу
{{page.1}}
и вижу чистую страницу. ни корявки, ни ошибки а именно чистую страницу.
как с этим бороться?

при этом если передать в темплейт не page а page все прекрасно работает, но этот вариант никак не подходит.

PS: база в utf-8, запросы пишу на raw sql, базу заполнял через стандартную админку.
Vermus
Наверное надо написать в темлейете так:
{%for p in page%}
{{p}}
{%endfor%}
pochechyev
не в этом дело. так, кстати, тоже пустую страницу показывает.
в системе темплейтов существует какое-то ограничение, описание которого я не могу найти.

нашел тег который предназначен для дебага - pprint с ним показывает исходные коды, но это тоже хреново.
скорее всего нужен тег который будет переводить из исходной кодировки в читаемую. но я его найти не могу.
Александр Кошелев
Лечить по фотографии тут никто не умеет. Так что, пока вы не покажите код, результата будет мало.
pochechyev
def get_all_published_pages(request):
raw_list=q("a", "SELECT * FROM pages_page WHERE draft=false")
if raw_list:
# Если раскоментить нижестоящее то все работает ОК.
# page_list=[]
#for raw in raw_list:
# Если раскоментить нижестоящее и передавать page_list то все работает ОК.
# page=[]
# page=list(raw)
# page[1]=unicode(page[1], "cp1251")
# page[3]=unicode(page[3], "cp1251")
# page_list.append(page)

return render_to_response("all_pages.html",{"page_list":raw_list})
else:
raise Http404()
ОС - debian
browser - firefox
стандартная локаль - utf-8
кодировка БД - utf8_general_ci

заполняю данные через стандартную админку.
pochechyev
Кажется разобрался.



All of Django’s database backends automatically convert Unicode strings into the appropriate encoding for talking to the database. They also automatically convert strings retrieved from the database into Python Unicode strings. You don’t even need to tell Django what encoding your database uses: that is handled transparently.

Если это не есть причина - прошу попровать.
Александр Кошелев
pochechyev
У вас какая цель? Найти где джанга что-то делает или свой плохой код исправить? Так займитесь делом.

Вы нас изначально обманули - ‘\xc4\xe2\xe0 \xf1\xee\xee\xe1\xf0\xe0\xe6\xe5\xed\xe8\xff’ это не utf8. Это cp1251. Отсюда и все проблемы.

Кстати, для таких простых запросов практиченее ORM использовать.
pochechyev
я и сам обманывался.
по каким-то причинам при сохранении в базу джанговская админка кодирует все данные в cp1251. соответственно когда я их вытаскиваю нужно декодировать их обратно.

а задача понять как это работает и исправить исходя из этих знаний исправить код.

использую чистый sql чтобы “научится”
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