Привет всем
Я использую Django 1.2.5 с Python 2.6 на двух машинах: Ubuntu 11.04 и Debian Lenny. Первый - мой локальный разработчик, а второй - удаленный сервер. Я использую django-fts и postgresql (база данных удалена и уникальна для обеих установок) для выполнения запросов полнотекстового поиска. Интересно, что на локальном компьютере я могу выполнить запрос fts с русскими символами. На удаленном сервере он выдает UnicodeEncodeError при оценке моего дополнительного.
В бэкэнде django-fts postgre я нахожу этот код:
ts_query = "plainto_tsquery('%s','%s')" % (self.language, unicode(query).replace("'", "''"))
where = '%s @@ %s' % (qn(self.vector_field.column), ts_query)
select = {}
order = []
if rank_field is not None:
select[rank_field] = 'ts_rank(%s.%s, %s, %d)' % (qn(self.model._meta.db_table), qn(self.vector_field.column), ts_query, rank_normalization)
order = ['-%s' % rank_field]
return qs.extra(select=select, where=[where], order_by=order)`
где запрос содержит u '\ u0430' или u "а" (кириллица), так что он до сих пор закодирован в utf-8.
Ошибка появляется в django / db / models / sql / compiler.py в строке 489 при попытке собрать запрос из дополнений:
result.append('(%s)' % str(col))
Итак, я перепробовал все, что касается кодирования / декодирования. Переменная LANG - это "ru_RU.UTF-8" на обоих компьютерах и в settings.py как DEFAULT_CHARSET. Больше идей нет. Любая помощь?
ОБНОВЛЕНИЕ: Я только что обнаружил, что мое приложение выполняется одинаково на обоих компьютерах. Разница между выполнением из оболочки (python manage.py runserver localhost: 8000) и запуском в режиме отладки из среды pydev в eclipse. Итак, может кто-нибудь сказать мне, есть ли разница между ручным запуском и запуском pydev относительно моих проблем кодирования?
ТИА.
Petr