4

我想从 python 2.6 中获取 SQL Server 2008 中的一个字段。这是我的 freeTDS .conf 文件:

[ARGSERVER03]
    host = 192.168.1.3
    port = 1433
    tds version = 7.0

这是代码:

conn = pymssql.connect(host='192.168.1.3', user='****', password='****', database='TrafficMonitor', as_dict=True, charset='UTF-8')
i = 0
cur.execute('SELECT * FROM dbo.tblTrafficCounterData')
while i < 10:
    car = cur.fetchone_asdict()
    if car is None:
        break
    c = car['Class']
    print c
    i = i + 1

但它给出了:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

Unicode 字段是波斯语。回溯是为了线car = cur.fetchone_asdict()

[编辑]

我已经从 sql server management studio 检查了数据库属性中的数据库排序规则,它是:

Arabic_CI_AS

但是当我在字符集中使用它时,它给出了:

LookupError: unknown encoding: Arabic_CI_AS
4

1 回答 1

4

您是否非常确定 SQL Server 使用的是 UTF-8(由您的 表示charset='UTF-8')?通常,我遇到的大多数 SQL Server 实例都使用 Microsoft 编码(不是 UTF-8),例如 cp1252(在美国)。

一些可以帮助您发现正确编码的事情:

SELECT DATABASEPROPERTYEX('dbname', 'Collation') SQLCollation

于 2012-04-04T13:14:03.820 回答