免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7685 | 回复: 14

请教python在读取DB2时,显示中文问题 [复制链接]

论坛徽章:
0
发表于 2005-11-06 22:02 |显示全部楼层
刚学了一阵子python,我想把DB2中的数据通过python读取出来,
经过查资料,现在数据已经读出,可不能显示中文
linux as3
DB2: v8.2  数据库 utf-8编码
python: 2.4.2

显示出来的结果
wx-1  ()

期望结果
wx-01  苹果01

小弟,第一次在python 区发贴
请大家给个建议,谢谢了

论坛徽章:
0
发表于 2005-11-07 08:45 |显示全部楼层
可以先看一下读出的是什么类型的字符串,如是:unicode还是str类型。可以使用

print type(s)

来看。然后再做进一步处理。如果是unicode可以直接使用,如果想显示可能要转为gb2312或gbk之类的编码。当然直接使用utf-8也是可以的,关键看你想要什么样的东西了。

不过所有的前提是你的内容的确可以从数据库中正确读出来。

论坛徽章:
0
发表于 2005-11-07 09:03 |显示全部楼层

谢谢limodu的回帖

今天一大早,就看到limodu回的贴,真是高兴,
因为我在查python的资料时,数次拜访过你的博客
留给我很深刻的印象

这是我的输出结果
wx-01  ()
<type 'str'>
<type 'str'>

可怎么转换为gb2312,才能存到一个文本中去呢?
还请多指教,谢谢

论坛徽章:
0
发表于 2005-11-07 10:44 |显示全部楼层


如果是str,那么我想你得到你应该是utf-8编码,转为gb2312(gbk可能要好一些,汉字多一些)很简单:

s = 'xxx' #utf-8编码的字符串
t = unicode(s, 'utf-8').encode('gbk')

t即是结果。

论坛徽章:
0
发表于 2005-11-07 23:22 |显示全部楼层
谢谢limodu的回贴,可还是显示不出来.我把代码贴出来
程序目的:
读取数据库的两个字段的内容,存到文本文件中
存放格式为

ZSL  延安路
SCL  四川路
XZL  西藏路

目前存在的问题,不能在python的shell界面下输出中文内容
中文会显示成().
请大家帮忙看看,

附代码
#!/usr/bin/python
#-*- encoding:UTF-8 -*-
import sys
import time
import DB2
St_Dict={}
rows=()
f=file('pp.txt','w')
conn = DB2.connect(dsn='DB_TEST', uid='db2inst1', pwd='*****')
curs=conn.cursor()
curs.execute('select sid,sname from street')
rows=curs.fetchall()
rows_count=len(rows)
a=rows_count-1
print a
for i in range(a) :
        sid=rows[i][0]
        sname=rows[i][1]
        print type(sid)
        print type(sname)
        id=unicode(sid,'UTF-8').encode('gbk')
        name=unicode(sname,'UTF-8').encode('gbk')
        print id,name
        f.write(id)
        f.write("      ")
        f.write(name)
        f.write("n")
        St_Dict[sid]=sname
print len(St_Dict)

这段代码也可以供大家参考如何连接DB2数据库

请各位走过,路过的朋友,看下,想想办法,这可是我第一次想用python来完成个实际功能,
我真不想就这个问题,打击我学习python的信心哦.

论坛徽章:
0
发表于 2005-11-08 08:33 |显示全部楼层
看你的代码感觉汉字就没取出来。因为如果不转编也应该有乱码显示出来,而你的结果是什么都没有,可能就是不行啊。

论坛徽章:
0
发表于 2005-11-08 14:35 |显示全部楼层
是的,在DB2的命令行下,select sid,sname from street 也只出现
ZSL (),难道DB2对命令行下,就不能显示中文了

论坛徽章:
0
发表于 2005-11-08 15:43 |显示全部楼层
看来db2就已经有问题了。再看一看db2相关的内容吧。

论坛徽章:
0
发表于 2005-11-08 16:36 |显示全部楼层
你当前命令行环境的编码是什么
set|grep LANG
set|grep CTYPE
如果你数据库里用的是UTF-8编码存储的
而当前环境又是GB2312的
那当然显示不了

论坛徽章:
0
发表于 2005-11-08 17:07 |显示全部楼层
AIX 5.2
bash-2.05b$ set |grep LANG
LANG=Zh_CN
bash-2.05b$ set |grep CTYPE
bash-2.05b$


export LANG=UTF-8

重新登录,也没用

[ 本帖最后由 myvm 于 2005-11-8 20:01 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP