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

Can not get correct result when query with pyodbc

我有一个 MS sql 服务器,我需要在 ubuntu 电脑上访问它的数据库。所以我使用 freetds/pyodbc 来查询数据。

OS: ubuntu 14.04
pyodbc:pyodbc-3.0.10

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

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 for ß,来自http://lwp.interglacial.com/appf_01.htm0xdf是原始编码,作为UTF8,它应该是0xC3,0x9F.

为什么 pyodbc 不 return UTF8 编码数据,我如何在 python 2.7 中解码它,谢谢~

需要检查的几件事:

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