he-son 发表于 2020-3-3 21:14:38

MAC os python3 utf-8 报错

python 调用txt文件 打印报错

”utf-8' codec can't decode byte 0xb3 in position 0“

zltzlt 发表于 2020-3-3 21:21:59

把你的相关代码发上来

把你的问题描述清楚

he-son 发表于 2020-3-3 21:25:03

zltzlt 发表于 2020-3-3 21:21
把你的相关代码发上来

把你的问题描述清楚

>>> f1 = open('/Users/heson/Downloads/OpenMe.txt' , encoding = 'utf-8')
>>> li=list(f1)
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
    li=list(f1)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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

zltzlt 发表于 2020-3-3 21:25:35

he-son 发表于 2020-3-3 21:25


不要用 encoding ,直接这样打开文件:

f1 = open('/Users/heson/Downloads/OpenMe.txt')

he-son 发表于 2020-3-3 21:28:09

he-son 发表于 2020-3-3 21:25


>>> f1 = open('/Users/heson/Downloads/OpenMe.txt')
>>> li=list(f1)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
    li=list(f1)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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

he-son 发表于 2020-3-3 21:29:16

zltzlt 发表于 2020-3-3 21:21
把你的相关代码发上来

把你的问题描述清楚

试了两个办法,都是报错,谢谢
>>> sys.getdefaultencoding()
'utf-8'

zltzlt 发表于 2020-3-3 21:30:23

请参考:https://fishc.com.cn/thread-158932-1-1.html

he-son 发表于 2020-3-3 21:31:58

zltzlt 发表于 2020-3-3 21:25
不要用 encoding ,直接这样打开文件:

也是报错的
>>> f1 = open('/Users/heson/Downloads/OpenMe.txt')
>>> li=list(f1)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
    li=list(f1)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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

zltzlt 发表于 2020-3-3 21:32:27

he-son 发表于 2020-3-3 21:31
也是报错的

修改了文件的编码吗 ?

he-son 发表于 2020-3-3 21:38:49

zltzlt 发表于 2020-3-3 21:32
修改了文件的编码吗 ?

没有,课后题下载的,编码格式utf-8,没有修改过
>>> f=open('/Users/heson/Downloads/OpenMe.txt')
>>> print(f)
<_io.TextIOWrapper name='/Users/heson/Downloads/OpenMe.txt' mode='r' encoding='UTF-8'>

he-son 发表于 2020-3-3 21:47:35

zltzlt 发表于 2020-3-3 21:30
请参考:https://fishc.com.cn/thread-158932-1-1.html

谢谢,看了方法,没有解决。
还有一个问题,不知道与这个事情没有关联,电脑直接打开30课后题文件,也会报错
/Users/heson/Desktop/截屏2020-03-0321.42.02.png
/Users/heson/Desktop/截屏2020-03-0321.43.26.png

LYF511 发表于 2020-3-3 21:58:15

本帖最后由 LYF511 于 2020-3-3 22:00 编辑

参考这个,不知道mac行不行
自己经常用的一个方法:
import chardet
encoding = chardet.detect(open(file,mode="rb").read())["encoding"]
open(file, encoding=encoding)
#file:文件路径
不知道行不行
要安装 chardet 库,py -m pip install chardet即可安装

he-son 发表于 2020-3-3 22:26:37

LYF511 发表于 2020-3-3 21:58
参考这个,不知道mac行不行
自己经常用的一个方法:



好的,我试一下

he-son 发表于 2020-3-3 22:37:02

LYF511 发表于 2020-3-3 21:58
参考这个,不知道mac行不行
自己经常用的一个方法:



要被这个bug玩坏了

import chardet
encoding = chardet.detect(open('/Users/heson/Downloads/record.txt',mode="rb").read())["encoding"]
f=open('/Users/heson/Downloads/record.txt', encoding=encoding)

#file:文件路径

for each_line in f:
      print(each_line)
Traceback (most recent call last):
File "/Users/heson/Documents/2324.py", line 32, in <module>
    for each_line in f:
UnicodeDecodeError: 'gb2312' codec can't decode byte 0xf4 in position 646: illegal multibyte sequence

miusa 发表于 2020-5-9 13:56:43

我也碰到了这个问题,题主解决了吗{:10_266:}
页: [1]
查看完整版本: MAC os python3 utf-8 报错