2015-11-02 31 views
-3

我的环境是相当qimilar到this问题与节能西里尔符号通过了unixODBC MSSQL和freetds的

从数据库中的数据正确显示的所有非Unicode。 我能够保存一些数据到数据库(ascii和西里尔文)。标准的ASCII字符,然后显示正确,但西里尔数据显示如下

РВР'ВР’Р'ВРВРІР

我如何能找到点错编码/解码operetion发生?

+0

只需调试您的程序。按照每个步骤,并验证每个点的数据仍然正确。不是我们可以提供帮助的东西,特别是没有任何代码行。 – MeanGreen

回答

1

我终于解决了一个问题。 在settings.py文件的正确的数据库的配置是:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'db', 
     'USER': 'user', 
     'PASSWORD': 'pass', 
     'HOST': '192.168.11.11', 
     'PORT': '3306', 
    }, 
    'mssql': { 
     'ATOMIC_REQUESTS': True, 
     'NAME': 'DB', 
     'ENGINE': 'django_pyodbc', 
     'USER': 'admin', 
     'PASSWORD': 'pass', 
     'OPTIONS': { 
      'dsn': 'DBDSN', 
      'host_is_server': True, 
      'collation': 'Cyrillic_General_CI_AS', 
      'driver_supports_utf8': True, 
      'unicode_results': True, 
      'autocommit': True, 
     }, 
    } 
} 

/etc/freetds/freetds.conf

[global] 
tds version = 7.3 
text size = 64512 

[SRV] 
host = mssql.local 
port = 1433 

/etc/odbc.ini

[ODBC Data Sources] 
DBDSN = Microsoft SQL Server 

[DBDSN] 
Driver = FreeTDS 
Servername = SRV 
Trace = No 
Database = DB 

的/ etc/odbcinst.ini

[FreeTDS] 
Description = FreeTDS 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so 
UsageCount = 1 

重要的一点是odbc.ini和odbsinst.ini文件不应在行的开头部分包含空格或制表符。 这些设置允许西里尔文符号通常插入到数据库中。