请教python在读取DB2时,显示中文问题

请教python在读取DB2时,显示中文问题

刚学了一阵子python,我想把DB2中的数据通过python读取出来,
经过查资料,现在数据已经读出,可不能显示中文
linux as3
DB2: v8.2  数据库 utf-8编码
python: 2.4.2

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

期望结果
wx-01  苹果01

小弟,第一次在python 区发贴
请大家给个建议,谢谢了
可以先看一下读出的是什么类型的字符串,如是:unicode还是str类型。可以使用

print type(s)

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

不过所有的前提是你的内容的确可以从数据库中正确读出来。
今天一大早,就看到limodu回的贴,真是高兴,
因为我在查python的资料时,数次拜访过你的博客
留给我很深刻的印象

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

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


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

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

t即是结果。
谢谢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的信心哦.
看你的代码感觉汉字就没取出来。因为如果不转编也应该有乱码显示出来,而你的结果是什么都没有,可能就是不行啊。
是的,在DB2的命令行下,select sid,sname from street 也只出现
ZSL (),难道DB2对命令行下,就不能显示中文了
看来db2就已经有问题了。再看一看db2相关的内容吧。
你当前命令行环境的编码是什么
set|grep LANG
set|grep CTYPE
如果你数据库里用的是UTF-8编码存储的
而当前环境又是GB2312的
那当然显示不了
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

重新登录,也没用