通过 unixODBC 和 FreeTDS 将西里尔符号保存到 MSSQL 的问题
Issue with saving cyrillic symbols to MSSQL via unixODBC and FreeTDS
我的环境和this
差不多
数据库中的所有非 unicode 数据均已正确显示。
我能够将一些数据保存到数据库(ascii 和西里尔文)。标准的 ascii 字符然后正确显示,但西里尔数据显示如下
Р В Р’В Р вР
如何找到错误的 encode/decode 操作点?
终于解决了一个问题。
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 文件不应在行首包含空格或制表符。
这些设置允许西里尔符号正常插入数据库。
我的环境和this
差不多数据库中的所有非 unicode 数据均已正确显示。 我能够将一些数据保存到数据库(ascii 和西里尔文)。标准的 ascii 字符然后正确显示,但西里尔数据显示如下
Р В Р’В Р вР
如何找到错误的 encode/decode 操作点?
终于解决了一个问题。 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 文件不应在行首包含空格或制表符。 这些设置允许西里尔符号正常插入数据库。