У меня есть проект Django (1.2.x), который предназначен для поддержки немецкого и английского языков. Проект размещен на Linux-боксе, за Apache (2.x), используя mod_wsgi
. База данных размещается на SQL Server 2005, работающем под Windows, в отдельном блоке. Драйвер ODBC easysoft SQL Server используется для соединения проекта с базой данных.
Я буду использовать одну из моделей в одном из приложений в проекте в качестве примера для этого вопроса. Эта модель содержит TextField. Это поле преобразуется в тип столбца NVARCHAR (MAX) в таблице на сервере SQL. Кодировка для базы данных установлена на «Latin1_General_CI_AS». Источник easysoft unixODBC настроен на использование ConvToUtf = 1
, который по существу преобразует данные из кодировки UCS-2 в кодировку UTF-8 при возврате их обратно в приложение из базы данных. ( Я упоминаю здесь UCS-2, потому что я прочитал и обнаружил, что сервер SQL хранит данные Unicode в кодировке UCS-2. )
Однако при просмотре данных, хранящихся в базе данных через панель администратора, немецкие символы преобразуются в странные символы (это видно как при просмотре данных в панели администратора, так и в API, которые возвращают данные в Формат JSON)
Примером является следующее немецкое слово: Geschäftsbedingungen . После того, как он был сохранен в базе данных, он выглядит как: Geschà 101ftsbedingungen .
Версией Python, работающей на Linux, является Python 2.6. Я не уверен, какую другую информацию я должен предоставить, чтобы иметь возможность представить больше контекста в проблеме.
Видимо, я попробовал пару вещей, но безрезультатно. Я ищу какие-либо подсказки о том, как решить эту проблему. Любая помощь с этим будет принята с благодарностью.
ОБНОВЛЕНИЕ : Если найденные мной данные сохраняются непосредственно в базе данных
таблица путем редактирования таблицы через
Программное обеспечение для управления SQL, данные
хорошо отображается как на админке Django
страница, а также API. Это
озадачивает. Когда данные сохранены
через админку странно
появляются символы.