python读取文件windows下乱码问题的解决

上一篇 / 下一篇  2014-08-08 11:48:52 / 个人分类:python学习

问题描述:python idle读取文件时显示乱码
操作系统Windows 7 64位
语言:python2.7
Shell:IDLE

问题步骤:
python打开文件
>>> f=open('笔记.txt','rb')
>>> f.seek(50)
>>> print f.readline()
显示正常文字

>>> f.seek(-128,2)
>>> f.tell()
969L
>>> print f.read()
显示文件内容为乱码。。。


解决:
>>> import codecs
>>> print (f.read()).decode('gbk').encode('utf-8')
>>> print (f.read()).decode('utf-8').encode('gbk')
均不能解决

>>> import sys
>>> type=sys.getfilesystemencoding()
>>> print (f.read()).decode('utf-8').encode(type)
显示仍然为乱码

>>> print (f.read()).decode(type).encode('utf-8')
显示正确

输入type,显示mbcs
>>> type
'mbcs'

结论:
1.该系统windows下编码格式为mbcs格式;
2.>>> print (f.read()).decode(type).encode('utf-8')解释为py文件的输出为utf-8格式,系统的编码格式为type(mbcs)格式,使用该语句能正常在shell中显示中文文本。。。

遗留了一个问题:
为什么seek在末尾使用负数的位置描述的时候就会出现乱码情形呢?其余情况均不出现,是个问题,可能是python的一个bug。。。

print (f.read()).decode(type)
显示就可以。。只需要解码就可以。。print是可以直接打印的。。

TAG:

 

评分:0

我来说两句

Open Toolbar