gpt4 book ai didi

python - 使用 pyodbc 查询时无法得到正确结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:11 25 4
gpt4 key购买 nike

我有一个ms sql服务器,我需要在ubuntu电脑上访问它的数据库。所以我使用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中解码它,谢谢~

最佳答案

需要检查的一些事项:

  • 确保您在 SQL Server 上选择的列是 NVARCHAR、NCHAR 或 NTEXT。 (这似乎来自你的例子)
  • TDS_VERSION 8.0 不存在;当提供 8.0 时,FreeTDS 回落至 7.1。 TDS 版本 7.1 不支持 NVARCHAR 或 NTEXT,因为它是在 SQL Server 2008 中引入的。请使用 TDS_VERSION 7.2 或 7.3。
  • 使用命令tsql -C 查看您正在使用的 FreeTDS 版本。如果版本是0.95,则可以使用7.3,如果版本是0.91,则可以使用7.2。

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

关于python - 使用 pyodbc 查询时无法得到正确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com