I have a string variable res which I have derived from a pyodbc cursor as shown in the bottom.
The table test
has a single row with data ä
whose unicode codepoint is u'\xe4'
.
The Result I get is
>>> res,type(res)
('\xe4', <type 'str'>)
Whereas the result I should have got is.
>>> res,type(res)
(u'\xe4', <type 'unicode'>)
I tried adding charset as utf-8 to my pyodbc connect string as shown below.
The result was now correctly set as a unicode but the codepoint was for someother string ꓃
which could be due to a possible bug in the pyodbc driver.
conn = pyodbc.connect(DSN='datbase;charset=utf8',ansi=True,autocommit=True)
>>> res,type(res)
(u'\ua4c3', <type 'unicode'>)
Actual code
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)
Additional details Database: Teradata pyodbc version: 2.7
So How do I now either
1) cast ('\xe4', <type 'str'>)
to (u'\xe4', <type 'unicode'>)
(is it possible to do this without unintentional side-effects?)
2) resolve the pyodbc/unixodbc issue