【发布时间】:2015-04-05 14:21:16
【问题描述】:
我有一个字符串变量 res,它是从 pyodbc 游标派生的,如底部所示。
表test 有一行数据ä,其unicode 代码点为u'\xe4'。
我得到的结果是
>>> res,type(res)
('\xe4', <type 'str'>)
而我应该得到的结果是。
>>> res,type(res)
(u'\xe4', <type 'unicode'>)
我尝试将字符集作为 utf-8 添加到我的 pyodbc 连接字符串中,如下所示。
结果现在已正确设置为 unicode,但代码点是其他字符串 ꓃,这可能是由于 pyodbc 驱动程序中可能存在的错误。
conn = pyodbc.connect(DSN='datbase;charset=utf8',ansi=True,autocommit=True)
>>> res,type(res)
(u'\ua4c3', <type 'unicode'>)
实际代码
import pyodbc
pyodbc.pooling=False
conn = pyodbc.connect(DSN='datbase',ansi=True,autocommit=True)
cursor = conn.cursor()
cur = cursor.execute('SELECT col1 from test')
res = cur.fetchall()[0][0]
print(res)
其他细节 数据库:Teradata pyodbc 版本:2.7
那么我现在该怎么做
1) 将('\xe4', <type 'str'>) 转换为(u'\xe4', <type 'unicode'>)(是否可以这样做而不会产生无意的副作用?)
2) 解决 pyodbc/unixodbc 问题
【问题讨论】:
标签: python unicode utf-8 odbc pyodbc