OpenSUSE linux 12.1, python 2.7.2, Django 1.2.5
Суть проблемы такова: есть проект все в котором работает через UTF-8 ( в settings.py явно не прописано,но известно точно что стандартная кодировка , все .py файлы и шаблоны) и понадобилось мне на определенный запрос возвращать страницу в cp1251.
В итоге в шаблон уходит пустая строка (предполагаю что происходит UnicodeError так как Джанга в итоге все конвертирует в unicode ). Пробовал сам, гуглил, смотрел в потолок, идеи кончились. Тупик.
Прошу помощи! У кого какие идеи есть?
=====РЕШЕНО=====
Предполагается что все шаблоны кодированы в UTF-8. Дополнительно импортируем:
from django.utils.encoding import force_unicode
import codecs
Пример шаблона:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={{charset}}">
</head>
<body>
{{value}}
</body>
</html>
Функция представления:
def test(request)
c={'charset':u'windows-1251', 'value':u'это_проверка'}
f=codecs.open(root_dir+u'templates/test.html', 'r' , 'utf-8')
t=Template(f.read())
f.close()
html=t.render(Context(c))
response=HttpResponse(html)
response['Content-Type']='text/html; charset=%s'%'windows-1251'
response.content=force_unicode(response.content).encode('cp1251')
return response