[英]pymssql on RHEL 6.5 - freetds installed using source in /opt/app/freetds
[英]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.