使用pyodbc查询时无法获得正确的结果

时间:2015-12-15 11:07:23

标签: python pyodbc

我有一个ms sql server,我需要在ubuntu pc中访问它的数据库。所以我使用freetds / pyodbc来查询数据。

操作系统:ubuntu 14.04
pyodbc:pyodbc-3.0.10

当ms sql server有一个特殊字符(ß)时,我无法得到正确的结果。

cnxn = pyodbc.connect(
        'DRIVER=FreeTDS;'
        'SERVER=10.1.1.1;'
        'PORT=1433;'
        'DATABASE=db;'
        'UID=sa;'
        'PWD=111;'
        'CHARSET=UTF-8;'
        'unicode_results=True'
        'TDS_Version=8.0')
cursor.execute("select * from test")
for row in cursor.fetchall():
    print row[0]

row [0]将包含字符ß,但是当我使用"".join("{:02x}".format(ord(c)) for c in row[0])时。 我发现行使用0xdf表示ßhttp://lwp.interglacial.com/appf_01.htm0xdf是原始编码,UTF8应为0xC3,0x9F

为什么pyodbc不返回UTF8编码数据,如何在python 2.7中解码它,谢谢〜

1 个答案:

答案 0 :(得分:1)

要检查的一些事项:

您还必须自己在Python 2.7中处理Unicode。使用Unicode时,Python 3.4或3.5会让您的生活更轻松!