免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2945 | 回复: 4
打印 上一主题 下一主题

请教大神,查询oracle获取中文数据为乱码,如何解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-25 14:15 |只看该作者 |倒序浏览
请教各位大神
使用python链接数据库,获取的中文数据打出来为‘\xb1\xbe\xb5\xd8\xbd\xd3\xc8\xeb’,代码如下

#coding=gbk
import cx_Oracle
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
conn =cx_Oracle.connect('test','itest','test')
cursor=conn.cursor()
cursor.execute("select * from fm_alarm t '")
row = cursor.fetchone()
print row
cursor.close()
conn.close()

论坛徽章:
0
2 [报告]
发表于 2014-07-25 14:50 |只看该作者
PostgreSQL 同问!

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
3 [报告]
发表于 2014-07-25 15:31 |只看该作者
如果是在Linux下面运行,把你的
print pow
改成
print pow.decode('utf-8')
试下。
如果是在Windows下面运行,改成
print pow.decode('gb2312')
试下。

论坛徽章:
0
4 [报告]
发表于 2014-07-25 16:36 |只看该作者
记住原则,读数据要decode,写数据要encode。
首先看看你的oracle数据库的编码格式,python这边直接decode(编码格式)

论坛徽章:
0
5 [报告]
发表于 2014-07-27 22:19 |只看该作者
处理中文最好是,先将读到的数据decode,然后再按照你想要的编码进行encode。
例子:假设数据库中的数据编码是utf-8,而你是在window下使用Python的,其终端的编码是cp936(GBK).那么你想显示无乱码的话就要要使用下面的语句:
pow.decode('utf-8').encode('gbk')
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP