首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyodbc返回®as?

pyodbc返回®as?
EN

Stack Overflow用户
提问于 2013-01-09 13:46:25
回答 1查看 138关注 0票数 1

在oracle db表中,我有一个带有一些数据的®字符

pyodbc从WinXP 32位和Win7 64位执行相同的查询会得到不同的结果

将数据转储到文件会产生如下输出:

Winxp :带有?#®的数据将替换为?

Win7 :使用®#正确数据的数据

你知道WinXP有什么问题吗,

查询代码如下:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 12:54:59

所以这里有两个可能的故障点,数据库连接编码和转储到文件时的文件编码。两者都需要指定,否则您将受到默认编码的支配,这些默认编码在不同的平台上会有所不同,并且可能不是您想要使用的。

要指定数据库的连接编码,请执行以下操作

代码语言:javascript
复制
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'

要指定文件编码,请执行以下操作

代码语言:javascript
复制
file = codecs.open("lol", "w", "utf-8")

正如您已经做过的,即使一开始不起作用,这也是正确的做法

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14228976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档