在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
最佳答案
因此,这里有两个可能的故障点,即转储到文件时的数据库连接编码和文件编码。都
需要指定,否则您会受默认编码的支配,默认编码会因平台而异,并且可能不是您要使用的默认编码。
要指定数据库的连接编码,请执行
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'
要指定文件编码,请执行
file = codecs.open("lol", "w", "utf-8")
正如您已经做过的,即使一开始它不起作用,这也是正确的做法