UnicodeDecodeError: кодек «ascii» не может декодировать ошибку при использовании render_to_response и dajax.assign - PullRequest
0 голосов
/ 10 ноября 2011

Я новичок в использовании django и dajax, и у меня возникла проблема с использованием dajax.assign для загрузки html-файла в div в другом html при использовании неанглийских символов, когда я устанавливаю язык сайта на английский, это работает хорошо, но когда я переключаюсь на испанский, это не так.

Вот что я делаю:

Я пытался:

dajax.assign('#setttabs-1','innerHTML','abc')

и работает нормально. Div показывает текст правильно, но когда я пытаюсь (я пытаюсь сделать перевод сайта):

dajax.assign('#setttabs-1','innerHTML','ábcñ')

генерирует исключение:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 465: ordinal not in range(128)

Я пошел и сделал поиск в Google и нашел это:

dajax.assign('#setttabs-1','innerHTML','ábcñ'.decode('utf-8'))

Что снова заставляет его работать правильно и правильно отображает все символы, проблема в том, что мне нужно загрузить шаблон в указанный div, поэтому следующее не работает:

dajax.assign('#setttabs-1','innerHTML',render_to_response('./settings/_change_language.html'.decode('utf-8'), context_instance=RequestContext(request)))

Также выдает исключение, упомянутое выше, при попытке загрузить шаблон. Шаблон имеет кодировку meta:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Мой ajax.py также начинается с:

# coding: utf-8

Как мне сказать dajax обрабатывать этот файл как utf-8, чтобы он мог правильно его отобразить? Есть ли более практичный способ сделать то, что я пытаюсь сделать здесь? Я чувствую, что упускаю что-то действительно простое, но я не могу понять это. Заранее благодарим за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 10 ноября 2011

Я изменил:

dajax.assign('#setttabs-1','innerHTML',render_to_response('./settings/_change_language.html'), context_instance=RequestContext(request)))

до:

dajax.assign('#setttabs-1','innerHTML',render_to_string('./settings/_change_language.html'.decode('utf-8'), context_instance=RequestContext(request)))

и теперь работает отлично. Хотя не знаю почему. Надеюсь, это поможет кому-то там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...