我有一个ms sql server,我需要在ubuntu pc中访问它的数据库。所以我使用freetds / pyodbc来查询数据。
操作系统:ubuntu 14.04当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.htm,0xdf
是原始编码,UTF8应为0xC3,0x9F
。
为什么pyodbc不返回UTF8编码数据,如何在python 2.7中解码它,谢谢〜
答案 0 :(得分:1)
要检查的一些事项:
tsql -C
查看您正在使用的FreeTDS版本。如果版本为0.95,则可以使用7.3,如果为0.91,则使用7.2。您还必须自己在Python 2.7中处理Unicode。使用Unicode时,Python 3.4或3.5会让您的生活更轻松!