烦人的python编码

xiaobin268 2009-05-06
今天用python做读取文件的小例子,代码如下:
filename = raw_input('请输入文件名称-->')
f = open(filename)
s = f.readline()
print('s------------> ',s)
f.close()
for line in s:
    print('line----> ',line.encode('gbk'))

但是我不管如何转化,打印出来的汉字都是乱码。有解决办法的朋友的么?说说。
xukong 2009-05-06
# -*- coding:gbk -*-

filename = './test.txt'
f = open(filename)   
s = f.readlines()   
#print 's------------> ',s
f.close()
for line in s:   
    print 'line----> ',line

如果你在WIN上,被读取的文件中也是GBK编码,可以试试上面的代码
xiaobin268 2009-05-07
xukong 写道
# -*- coding:gbk -*-

filename = './test.txt'
f = open(filename)   
s = f.readlines()   
#print 's------------> ',s
f.close()
for line in s:   
    print 'line----> ',line

如果你在WIN上,被读取的文件中也是GBK编码,可以试试上面的代码
你这个我也试过了,不行,打印出来还是乱码。
xiaobin268 2009-05-07
解决了。
print('line----> %s ' % line)

我真,这样写就行,但是
print('line----> ',line.encode('gbk'))  

写就是不行,真服了python的编码。
xukong 2009-05-07
xiaobin268 写道
xukong 写道
# -*- coding:gbk -*-

filename = './test.txt'
f = open(filename)   
s = f.readlines()   
#print 's------------> ',s
f.close()
for line in s:   
    print 'line----> ',line

如果你在WIN上,被读取的文件中也是GBK编码,可以试试上面的代码
你这个我也试过了,不行,打印出来还是乱码。


啊,我发的这段代码是实际运行显示正常后才发上来的,环境是win sp3 + py 2.6.2,我用 print() 的调用输出的也是字节形式 与 print 的输出为什么不同我GOOGLE下..
xukong 2009-05-07
xiaobin268 写道
解决了。
print('line----> %s ' % line)

我真,这样写就行,但是
print('line----> ',line.encode('gbk'))  

写就是不行,真服了python的编码。


上面的 line.encode('gbk')我觉得没有必要解码到GBK,如果你的被读文件本来就是GBK编码的话

至于你说的服了PY的编码我觉得没必要,虽然输出不同,但是你的调用方式也不同,可能用的环境不恰当吧

哦,其实很明显啊,你的上一句是指明了将 line 作为 string %s 格式输出

下一句,没有指明显示的格式,应该就是以原始形式输出了

我记得似乎看到过 print() 的函数形式是在 python 3中才出现的?如果是的话,新东西就要仔细看下文档了
xiaobin268 2009-05-07
xukong 写道
xiaobin268 写道
解决了。
print('line----> %s ' % line)

我真,这样写就行,但是
print('line----> ',line.encode('gbk'))  

写就是不行,真服了python的编码。


上面的 line.encode('gbk')我觉得没有必要解码到GBK,如果你的被读文件本来就是GBK编码的话

至于你说的服了PY的编码我觉得没必要,虽然输出不同,但是你的调用方式也不同,可能用的环境不恰当吧

哦,其实很明显啊,你的上一句是指明了将 line 作为 string %s 格式输出

下一句,没有指明显示的格式,应该就是以原始形式输出了

我记得似乎看到过 print() 的函数形式是在 python 3中才出现的?如果是的话,新东西就要仔细看下文档了

就是我不用line.encode('gbk')输出照常是乱码。
sdem 2009-05-07
如果LZ贴出所谓的“乱码”,80%以上的人都能告诉你错在哪里了。哈哈。
yoursmile 2009-05-07
文件本身设置成gbk,在代码中加入# -*- coding:gbk -*-  
Hooopo 2009-05-07
呼呼~~~~python也这样呀??
Global site tag (gtag.js) - Google Analytics