我有一個字符串變量res,我從pyodbc光標派生出來,如下圖所示。 表test
具有單行,其數據碼爲ä
,其Unicode碼點爲u'\xe4'
。Python pyodbc統一編號問題
我得到的結果是
>>> res,type(res)
('\xe4', <type 'str'>)
雖然我應該得到的結果。
>>> res,type(res)
(u'\xe4', <type 'unicode'>)
我試着將charset作爲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的問題
Thanks @Bryan今天我會試試這個。 – 2015-04-08 01:00:19
感謝它按預期工作。但是我們的要求也是支持亞洲字符,所以我將使用通過jpype使用JDBC的JayDeBeApi。 – 2015-04-08 08:51:31