jimuerga 发表于 2020-6-9 17:15:04

用idle打开了文件,但试图读取时产生如下错误,请神指点,谢谢

(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte

qiuyouzhi 发表于 2020-6-9 17:16:55

编码问题
发完整代码

jimuerga 发表于 2020-6-9 17:22:49

qiuyouzhi 发表于 2020-6-9 17:16
编码问题
发完整代码

f = open('/Users/jimuerga/Desktop/OpenMe.txt')
>>> f.read()
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
    f.read()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte

qiuyouzhi 发表于 2020-6-9 17:24:54

jimuerga 发表于 2020-6-9 17:22
f = open('/Users/jimuerga/Desktop/OpenMe.txt')
>>> f.read()
Traceback (most recent call last):


open加个参数:
encoding = "utf-8"

jimuerga 发表于 2020-6-9 17:33:02

qiuyouzhi 发表于 2020-6-9 17:24
open加个参数:

>>> f = open('/Users/jimuerga/Desktop/OpenMe.txt',encoding = "utf-8")
>>> f.read()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
    f.read()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte

qiuyouzhi 发表于 2020-6-9 17:33:43

jimuerga 发表于 2020-6-9 17:33
>>> f = open('/Users/jimuerga/Desktop/OpenMe.txt',encoding = "utf-8")
>>> f.read()
Traceback (mo ...

发文件内容

jimuerga 发表于 2020-6-9 17:40:43

长期使用Windows操作系统的朋友很容易被扩展名所误导,认为扩展名决定文件类型,其实这种观念是错误的!

其实这就跟一个姓张的坏人,尽管把名字改为了“张好人”,但他还是一个坏人是一个道理的^_^

关于文件的扩展名,初学者容易走进的误区:

误区一:文件扩展名是一个文件的必要构成部分

一个文件可以有或没有扩展名,对于打开文件操作,没有扩展名的文件需要选择程序去打开它,有扩展名的文件会自动用设置好的程序(如有)去尝试打开(是“尝试打开”,而不是“打开”的原因参看下面的第2个误区),文件扩展名是一个常规文件的构成部分,但一个文件并不一定需要一个扩展名。

误区二:文件扩展名表明了该文件是何种类型

文件扩展名可以人为设定,扩展名为TXT的文件有可能是一张图片,同样,扩展名为M-P3的文件,依然可能是一个视频。

jimuerga 发表于 2020-6-9 17:41:33

qiuyouzhi 发表于 2020-6-9 17:33
发文件内容

长期使用Windows操作系统的朋友很容易被扩展名所误导,认为扩展名决定文件类型,其实这种观念是错误的!

其实这就跟一个姓张的坏人,尽管把名字改为了“张好人”,但他还是一个坏人是一个道理的^_^

关于文件的扩展名,初学者容易走进的误区:

误区一:文件扩展名是一个文件的必要构成部分

一个文件可以有或没有扩展名,对于打开文件操作,没有扩展名的文件需要选择程序去打开它,有扩展名的文件会自动用设置好的程序(如有)去尝试打开(是“尝试打开”,而不是“打开”的原因参看下面的第2个误区),文件扩展名是一个常规文件的构成部分,但一个文件并不一定需要一个扩展名。

误区二:文件扩展名表明了该文件是何种类型

文件扩展名可以人为设定,扩展名为TXT的文件有可能是一张图片,同样,扩展名为M-P3的文件,依然可能是一个视频。

_荟桐_ 发表于 2020-6-9 17:43:00

本帖最后由 _荟桐_ 于 2020-6-9 17:44 编辑

用记事本打开文件
然后另存为,看文件的编码
然后打开的时候open(文件名,打开方式,encoding=文件编码)

jimuerga 发表于 2020-6-9 17:48:13

_荟桐_ 发表于 2020-6-9 17:43
用记事本打开文件
然后另存为,看文件的编码
然后打开的时候open(文件名,打开方式,encoding=文件编码)

文件的编码在哪理可以看到呢?

_荟桐_ 发表于 2020-6-9 17:50:14

jimuerga 发表于 2020-6-9 17:48
文件的编码在哪理可以看到呢?

记事本打开
另存为
然后看编码那一栏里显示的是什么

建议用pycharm,或vscode这样的编辑器,会在右下角显示编码

jimuerga 发表于 2020-6-9 17:54:44

好的,谢谢,我试试,我好像没有安装 pycharm编辑器

Twilight6 发表于 2020-6-9 18:01:52

jimuerga 发表于 2020-6-9 17:54
好的,谢谢,我试试,我好像没有安装 pycharm编辑器

显示扩展名设置:
https://xxx.ilovefishc.com/album/202005/18/134028ubtgeyabcpzpuvpa.png

储存文本设置:
https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg
https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg

Twilight6 发表于 2020-6-9 18:05:22

jimuerga 发表于 2020-6-9 17:54
好的,谢谢,我试试,我好像没有安装 pycharm编辑器

然后在 open 里带上 encoding ='utf-8' 即可正常打开

txxcat 发表于 2020-6-9 18:46:52

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte,说的是用utf-8解码错误,所以试试看gbk解码:
f = open('/Users/jimuerga/Desktop/OpenMe.txt',encoding='gbk')

jimuerga 发表于 2020-6-9 19:37:42

txxcat 发表于 2020-6-9 18:46
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte,说的是用 ...

非常感谢,可能保存的文本编码就是用'gbk'的缘故,改了编码方式之后就可以用了。谢谢
页: [1]
查看完整版本: 用idle打开了文件,但试图读取时产生如下错误,请神指点,谢谢