在oracle db表中,我有一个带有一些数据的®字符
pyodbc从WinXP 32位和Win7 64位执行相同的查询会得到不同的结果
将数据转储到文件会产生如下输出:
Winxp :带有?#®的数据将替换为?
Win7 :使用®#正确数据的数据
你知道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发布于 2013-01-10 12:54:59
所以这里有两个可能的故障点,数据库连接编码和转储到文件时的文件编码。两者都需要指定,否则您将受到默认编码的支配,这些默认编码在不同的平台上会有所不同,并且可能不是您想要使用的。
要指定数据库的连接编码,请执行以下操作
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'要指定文件编码,请执行以下操作
file = codecs.open("lol", "w", "utf-8")正如您已经做过的,即使一开始不起作用,这也是正确的做法
https://stackoverflow.com/questions/14228976
复制相似问题