繁体   English   中英

将 pymssql 与 freetds 一起使用时出现 UnicodeDecodeError

[英]UnicodeDecodeError when using pymssql with freetds

我想从 python 2.6 获取 SQL 服务器 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 字段是波斯语。 回溯是为了 line car = cur.fetchone_asdict()

[编辑]

我已经从 sql 服务器管理工作室检查了数据库属性中的数据库排序规则,它是:

Arabic_CI_AS

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

LookupError: unknown encoding: Arabic_CI_AS

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM