python读文件问题

BaronZ 2013-07-11 06:05:15
python文件,里面有中文,出问题了。代码如下

fileobj = open('1.txt');
fileobj.read();

错误提示如下:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 7: illegal mu
ltibyte sequence


编码问题呀,请问高手,这个要怎么破?
...全文
350 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DevinXie 2013-07-24
  • 打赏
  • 举报
回复
引用 1 楼 u011348293 的回复:
指定open函数的编码方式试试?例如,如果文件的编码方式是utf-8的话:
open('1.txt', 'r', -1, 'utf-8')


这是open的定义:
open(...)
open(file, mode='r', buffering=-1, encoding=None,
errors=None, newline=None, closefd=True, opener=None) -> file object

2.7里面open函数有encoding参数么?
hsfzxjy 2013-07-23
  • 打赏
  • 举报
回复
用codecs库
import codecs

f = codecs.open('1.txt','r','GB2312')

f.read()

f.close()
crifan 2013-07-23
  • 打赏
  • 举报
回复
1.“python文件,里面有中文” 是你的python代码这个文件里面,有中文,还是你打开的1.txt里面有中文??? 2.“UnicodeDecodeError: 'gbk' codec can't decode byte” 错误原因: 用gbk去解析别的某种编码的字符,无法解析,所以出错了。 解决办法: 没法给出解决办法。因为你贴出来的信息太少了。 3.贴出你的完整的python代码,说出来你想要实现什么目的,然后具体是哪行代码,出了何种错误,然后别人才能帮你分析错误原因,帮你解决问题。 4.类似的错误,总之你先去搞懂基本概念,问题自然就迎刃而解了: 【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法
prehawk 2013-07-22
  • 打赏
  • 举报
回复
难道是在命令行里? 那要修改shell的编码吧 我最近看到这篇文章http://shirley-ren.iteye.com/blog/1018750
坚强的豁着 2013-07-22
  • 打赏
  • 举报
回复
八成是编码的问题啦,UTF-8
rch123 2013-07-13
  • 打赏
  • 举报
回复
lz把代码铁出来吧! 这样的代码片段让人猜很费解的... 一共就 py文件 txt文件 贴出来, 这样的问题也有可能与txt本身的编码有关,还是建议贴出来看看
openlqh1990 2013-07-12
  • 打赏
  • 举报
回复
在最前面加上 #-*- coding:utf8 -*-
梧桐126 2013-07-12
  • 打赏
  • 举报
回复
1楼说的对,好像是这样的!
panghuhu250 2013-07-12
  • 打赏
  • 举报
回复
1楼的办法应该可以。
引用 4 楼 BaronZ 的回复:
这样的话,read()读出来是没有内容的?
没有报错的话,是不是你的文件路径不对,打开的就是一个没有内容的文件? 试试这个:先以二进制方式打开,读入。检查读入的bytes的长度,确保它非空,再对它解码。
In [1]: bs = open('/tmp/x.sh', 'rb').read()

In [2]: print(len(bs))
11

In [3]: print(bs.decode(encoding='utf-8'))
#/bin/bash
angel_su 2013-07-12
  • 打赏
  • 举报
回复
谁知道你的1.txt是啥,尝试多种编码都不行的话,不如用二进制读取一部分内容后贴出来看看...
BaronZ 2013-07-12
  • 打赏
  • 举报
回复
引用 3 楼 openlqh1990 的回复:
在最前面加上 #-*- coding:utf8 -*-
一样的,内容读不到
BaronZ 2013-07-12
  • 打赏
  • 举报
回复
引用 1 楼 u011348293 的回复:
指定open函数的编码方式试试?例如,如果文件的编码方式是utf-8的话:
open('1.txt', 'r', -1, 'utf-8')
这是open的定义: open(...) open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -> file object
这样的话,read()读出来是没有内容的?
XanaduT 2013-07-11
  • 打赏
  • 举报
回复
指定open函数的编码方式试试?例如,如果文件的编码方式是utf-8的话:
open('1.txt', 'r', -1, 'utf-8')
这是open的定义: open(...) open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -> file object

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧