在oracle db table上,我有一个带有一些数据的字符
pyodbc从WinXP 32bit和Win7 64bit执行相同的查询会得到不同的结果
将数据转储到文件中会将输出显示为:
Winxp:数据有? #?替换为?
Win7:带有#Proper数据的数据
任何想法,WinXP的问题是什么,
以下查询代码:
def dbquery(dbipaddr,dbname,pwd,sid,port,querystr):
try:
import cx_Oracle
conn_str=dbname+"/"+pwd+"@"+dbipaddr+":"+port+"/"+sid
conn = cx_Oracle.connect(conn_str)
cur=conn.cursor()
cur.execute(querystr)
queryRes = cur.fetchone()
tmp = []
res = []
while queryRes:
for res in queryRes:
try:
tmp = res.read()
except:
tmp = res
tmp.append(tmp)
res.append(tuple(tmp))
queryRes = cur.fetchone()
tmp = []
conn.close()
except Exception, ex:
print ex.message
return []
return res
答案 0 :(得分:3)
因此,转储到文件时,这里有2个可能的失败点,数据库连接编码和文件编码。都 需要指定,否则你将受到默认编码的支配,这些编码会因平台而异,可能不是你想要使用的。
要指定数据库的连接编码,请执行
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'
指定文件编码
file = codecs.open("lol", "w", "utf-8")
正如您已经做过的那样,即使它最初没有起作用也是正确的做法