gpt4 book ai didi

sql-server - 通过 unixODBC 和 FreeTDS 从 MSSQL 返回西里尔符号的问题

转载 作者:行者123 更新时间:2023-12-01 05:29:47 25 4
gpt4 key购买 nike

我在远程主机上的 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。

最佳答案

你得到一个?为不可打印的字符返回

运行以下命令以查看您的 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

关于sql-server - 通过 unixODBC 和 FreeTDS 从 MSSQL 返回西里尔符号的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11869044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com