2011-01-20 2 views
2

Django, похоже, хочет, чтобы его база данных была закодирована в UTF-8, но наша устаревшая база данных закодирована в LATIN1, которой требуются устаревшие системы. Можно/возможно подключить материал db-доступа Django для перевода между UTF-8 и LATIN1 при чтении/записи из/в базу данных? Есть ли лучшее решение (которое не требует преобразования db)?Как я могу использовать Django с устаревшей базой данных Postgresql, данные которой закодированы в LATIN1?

ответ

0

Я предлагаю сбросить файл sql и использовать iconv, чтобы преобразовать все в UTF-8.

Вы можете использовать что-то похожее на это, которое я использовал для кириллицы (русский) Latin1 в UTF8:

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql 
+0

Конечно, это было бы легко, но я бы подумал об этом «преобразовании db», о котором я упомянул в своем вопросе, которого я не могу сделать из-за устаревших приложений. – psj

4

PostgreSQL будет переводить для вас, если вы установите client_encoding в UTF8, до тех пор, как ваша база данных находится в LATIN1 (а не в SQLASCII). Вы можете либо отправить django команду SET client_encoding = 'UTF8', либо вы можете изменить значение по умолчанию в postgresql.conf.

Смежные вопросы