我在远程主机上的 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 12.08.15
在 python 中使用 pyodbc 我得到'?'而不是西里尔符号 - 我尝试了两个 python 版本:UCS2 和 UCS4。
你得到一个?返回不可打印字符
运行下面的命令来查看您的 Python 设置支持的 unicode :-
python -c "import sys;print(sys.maxunicode<66000)and'UCS2'or'UCS4'"
接下来需要将 FreeTDS 设置为使用与 Python 相同的字符集。如果 FreeTDS 不支持您在 Python 中使用的 unicode 格式,您将需要更改 Python 和 FreeTDS。
要在启用 UCS2 的情况下从源代码重建 Python,您需要执行以下操作:-
$ ./configure --enable-unicode=ucs2
$ make
$ sudo make install
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)