python输出unicode编码_Python以utf8编码读取文件

python输出unicode编码_Python以utf8编码读取文件withopen(self.path,’r’)astest:forlineintest:pass代码如上,出现错误:UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition…UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition9:…或者是UnicodeDecodeErr..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

with open(self.path, 'r') as test:
     for line in test:
         pass

代码如上,出现错误:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position …
 

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 9: ...

或者是

UnicodeDecodeError: 'gbk' codec can't decode byte 0xb3 in position 9: illegal multibyte sequence

解决方法

主要原因是因为编码的问题,可能是因为0x80这个字节在gbk编码中没有这个字符,可能原字符是两个字节,在gbk里被解析成了一个字节,导致字符不存在。解决方法有两个,一个是二进制读取,一个是改编编码方式:

方法一:二进制读取

 with open(self.path, 'rb') as test:
     for line in test:
         pass

但是这样在读取的是中文文本的时候还可能会产生其他的错误:

TypeError: a bytes-like object is required, not 'str'

方法二:改变打开文件的编码方式

 with open(self.path, 'r', encoding='utf-8') as test:
     for line in test:
         pass

或者

 with open(self.path, 'r', encoding='utf-8-sig') as test:
     for line in test:
         pass

这个utf-8-sig亲测好用,屡试不爽,非常nice

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194235.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦

    程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结作者:July–结构之法算法之道blog之博主。时间:2010年10月-2018年5月,一直在不断更新中..出处:http://blog.csdn.net/v_JULY_v。说明:本博客中部分文章经过不断修改、优化,已集结出版成书《编程之法:面试和算法心得》。前言开博4年有余,…

  • java 敏感字过滤_Java实现敏感词过滤「建议收藏」

    java 敏感字过滤_Java实现敏感词过滤「建议收藏」系列目录:并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须…

  • vim常用配置_如何配置电脑

    vim常用配置_如何配置电脑1.首先需要安装一个ctag:apt-getinstallexuberant-ctags2.安装taglist:http://vim.sourceforge.net/scripts/download_script.php?src_id=6416复制到ubuntu中,使用命令解压:unziptaglist_42.zip3.解压后出现两个文件夹,doc和…

  • 新东方王强经典语录视频_新东方王强北大演讲视频

    新东方王强经典语录视频_新东方王强北大演讲视频王强老师是我最喜欢和尊敬的新东方老师之一,06年冬天,有幸王强老师到我所在的大学做演讲。其实,之前也看过很多王强老师演讲的视频,特摘录王强老师经典十条语录。王强老师语录一:中国人强调含蓄,我含一半,你蓄一半,剩下的就是我要表达的。我举个例子就知道了。比如说一首英文歌曲唱ILoveYou的。这抽象概念,英语表达得非常充满细节和逻辑,你不会觉得有歧义和想象…

  • 七牛云,在浏览器可以正常加载图片在html img标签中无法加载

    七牛云,在浏览器可以正常加载图片在html img标签中无法加载

  • 注册网页_dubbo服务注册

    注册网页_dubbo服务注册大概在去年的时候发现生产环境使用eureka经常会发现服务假死eureka没有给踢掉的情况,然后就衍生了要不就换个注册中心试试,然后就了解到了nacos,正好他还融合了配置中心,但是后来碍于切换时怕生产环境不稳定,丢数据等问题就一直没有换,但后续的项目的注册中心都换成了nacos,这篇文章我就来模拟一下如何将eureka平滑切换成nacos………………

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号