鱼C论坛

 找回密码
 立即注册
查看: 1028|回复: 14

MAC os python3 utf-8 报错

[复制链接]
发表于 2020-3-3 21:14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python 调用txt文件 打印报错

”utf-8' codec can't decode byte 0xb3 in position 0“
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 21:21:59 | 显示全部楼层
把你的相关代码发上来

把你的问题描述清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:25:03 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:21
把你的相关代码发上来

把你的问题描述清楚
  1. >>> f1 = open('/Users/heson/Downloads/OpenMe.txt' , encoding = 'utf-8')
  2. >>> li=list(f1)
  3. Traceback (most recent call last):
  4.   File "<pyshell#19>", line 1, in <module>
  5.     li=list(f1)
  6.   File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
  7.     (result, consumed) = self._buffer_decode(data, self.errors, final)
  8. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:25:35 | 显示全部楼层

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

  1. f1 = open('/Users/heson/Downloads/OpenMe.txt')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:28:09 | 显示全部楼层
  1. >>> f1 = open('/Users/heson/Downloads/OpenMe.txt')
  2. >>> li=list(f1)
  3. Traceback (most recent call last):
  4.   File "<pyshell#24>", line 1, in <module>
  5.     li=list(f1)
  6.   File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
  7.     (result, consumed) = self._buffer_decode(data, self.errors, final)
  8. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:29:16 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:21
把你的相关代码发上来

把你的问题描述清楚

试了两个办法,都是报错,谢谢
  1. >>> sys.getdefaultencoding()
  2. 'utf-8'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:30:23 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:31:58 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:25
不要用 encoding ,直接这样打开文件:

也是报错的
  1. >>> f1 = open('/Users/heson/Downloads/OpenMe.txt')
  2. >>> li=list(f1)
  3. Traceback (most recent call last):
  4.   File "<pyshell#24>", line 1, in <module>
  5.     li=list(f1)
  6.   File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
  7.     (result, consumed) = self._buffer_decode(data, self.errors, final)
  8. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:32:27 | 显示全部楼层

修改了文件的编码吗 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:38:49 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:32
修改了文件的编码吗 ?

没有,课后题下载的,编码格式utf-8,没有修改过
  1. >>> f=open('/Users/heson/Downloads/OpenMe.txt')
  2. >>> print(f)
  3. <_io.TextIOWrapper name='/Users/heson/Downloads/OpenMe.txt' mode='r' encoding='UTF-8'>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 21:47:35 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:30
请参考:https://fishc.com.cn/thread-158932-1-1.html

谢谢,看了方法,没有解决。
还有一个问题,不知道与这个事情没有关联,电脑直接打开30课后题文件,也会报错

                               
登录/注册后可看大图


                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:58:15 | 显示全部楼层
本帖最后由 LYF511 于 2020-3-3 22:00 编辑

参考这个,不知道mac行不行
自己经常用的一个方法:
  1. import chardet
  2. encoding = chardet.detect(open(file,mode="rb").read())["encoding"]
  3. open(file, encoding=encoding)
  4. #file:文件路径
复制代码

不知道行不行
要安装 chardet 库,
  1. py -m pip install chardet
复制代码
即可安装
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 22:26:37 | 显示全部楼层
LYF511 发表于 2020-3-3 21:58
参考这个,不知道mac行不行
自己经常用的一个方法:

好的,我试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 22:37:02 | 显示全部楼层
LYF511 发表于 2020-3-3 21:58
参考这个,不知道mac行不行
自己经常用的一个方法:

要被这个bug玩坏了

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

  4. #file:文件路径

  5. for each_line in f:
  6.         print(each_line)
复制代码
  1. Traceback (most recent call last):
  2.   File "/Users/heson/Documents/2324.py", line 32, in <module>
  3.     for each_line in f:
  4. UnicodeDecodeError: 'gb2312' codec can't decode byte 0xf4 in position 646: illegal multibyte sequence
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 13:56:43 | 显示全部楼层
我也碰到了这个问题,题主解决了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 01:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表