我在远程主机上的 Ubuntu 12.04 LTS 和 MSSQL 2008 上使用 django-pyodbc 作为数据库后端。除了返回西里尔符号外,它工作得很好。而不是他们,我看到问号 - '?'。我已经开始调查可能导致此问题的原因。
据我了解,MSSQL-django 链看起来是这样的:
MSSQL <-> FreeTDS <-> unixODBC <-> pyodbc <-> django-pyodbc
所以我从 FreeTDS 开始。当我在 tsql 中运行查询时——效果很好,我可以看到包括西里尔文在内的所有符号。
下一个是 isql - 据我了解,我可以测试 FreeTDS <-> unixODBC 对。在那里我没有得到正确的数据。事实上,当我在包含西里尔符号的 isql 列中运行查询时,它们是空的或包含不可见的符号。我猜是 FreeTDS <-> unixODBC 之间的通信问题。什么可能导致这个问题?顺便说一句,我也尝试过 iusql - 没有任何改变。
MSSQL 排序规则是 Cyrillic_General_CI_AS。
freetds.conf 的内容:
[global]
tds version = 4.2
dump file = /tmp/freetds.log
debug flags = 0xffff
timeout = 10
connect timeout = 10
client charset = UTF-8
text size = 64512
[egServer50]
host = symachine.domain.com
port = 5000
tds version = 5.0
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0
[rfxdigest]
host = mssql-iis-1
port = 1433
tds version = 8.0
client charset = UTF-8
odbc.ini 的内容:
[RFX]
Description = Rfx digest server
Driver = FreeTDS
Database = RFXDB
Servername = rfxdigest
TDS_Version = 8.0
编辑1 15.08.12
在 python 中使用 pyodbc 我得到'?而不是西里尔符号 - 我尝试了两个 python 版本:UCS2 和 UCS4。