已解决:UnicodeDecodeError: ‘gb2312‘ codec can‘t decode byte 0xe5 in position 1

news2024/11/18 9:30:32

起因

python 读文件报错。这个报错不是来自open而是read函数(请看最后部分)。
原因:文件编码不一致。
比如文件本身编码为 gb2312,而 python默认以 utf-8 编码打开,报错。

解决

初级:以通用的 utf-8 编码打开。

with open(file_path, 'r', encoding=‘utf-8’) as file:
    code = file.read()

问题:文件本身编码非 utf-8 能够解析的编码,比如gbk,就无法打开了。


中级:先读取文件编码,然后用该编码打开

with open(file_path, 'rb') as file:
    content = file.read()
    encoding = chardet.detect(content)['encoding']
    print("编码为:" + encoding) 
with open(file_path, 'r', encoding=encoding) as file:
    content = file.read()

问题:当文件本身已经存在部分乱码时,无法打开。


高级:ignore:忽略无法解码或编码的字符,直接跳过。

 try:
     with open(file_path, 'rb') as file:
         content = file.read()
         encoding = chardet.detect(content)['encoding']
         
     with open(file_path, 'r', encoding=encoding, errors='ignore') as file:
         content = file.read()
 except Exception as e:
     logging.error(e)

解释:
errors参数解释
errors是一个可选字符串,用于指定如何处理编码和解码错误——不能在二进制模式中使用。

errors 常用的参数值:
在这里插入图片描述

strict:当遇到无法解码或编码的字符时,抛出 ValueError 异常。也是默认值。(解释:UnicodeDecodeError 实际是 read()函数报的错,不是open函数报的
ignore:忽略无法解码或编码的字符,直接跳过,会缺失这部分内容
replace:将畸形数据替换为指定字符(比如问号’?')。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1371685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Boot】SpringBoot maven 项目创建图文教程

创建一个Spring Boot项目并使用Maven进行构建是一项相对简单的任务。以下是使用IntelliJ IDEA创建Spring Boot Maven项目的详细教程: 步骤 1:安装 IntelliJ IDEA 确保你已经安装了最新版本的 IntelliJ IDEA。你可以从官方网站下载并安装。 步骤 2&am…

Python教程(21)——面向对象编程的三大特性

面向对象三大特性 封装继承多态 在Python中,面向对象编程是一种核心的编程思想。Python被称为“一切皆对象”的语言,因为在Python中,几乎所有的数据都被视为对象。这包括数字、字符串、列表、函数等基本类型,还有自定义的类和对象…

安卓(雷电)模拟器清除屏幕密码

1、设置磁盘可写 启动模拟器,然后在模拟器的设置界面,设置磁盘共享为可写入,重启模拟器,如下图: 2、找到模拟器目录 返回桌面,右键模拟器图标,打开文件所在目录,如下图&#xff1a…

【Spring Cloud】Gateway组件的三种使用方式

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯 &am…

【2024系统架构设计】 系统架构设计师第二版-面向服务架构设计理论与实践

目录 一 概述 二 SOA的参考架构 三 SOA主要协议和规范 四 SOA设计标准和原则 五 SOA的设计模式 六 SOA的构建和实施 ​

【前端】前后端的网络通信基础操作(原生ajax, axios, fetch)

概述 前后端网络请求工具 原生ajaxfetch apiaxios GET和POST请求 get只能发纯文本 post可以发不同类型的数据,要设置请求头,需要告诉服务器一些额外信息 测试服务器地址 有一些公共的测试 API 可供学习和测试用途。这些 API 允许你发送 HTTP 请求…

浏览器不支持 css 中 :not 表达式的解决方法

问题 使用 :not 表达式的样式在不同浏览器中存在不生效的问题。 原因 不生效是因为浏览器版本较低所导致的。(更多详细信息请看:MDN) 解决方法 初始写法: .input-group:not(.user-name, .user-passwork){width: auto; }改成…

基于jsp的在线求职招聘信息系统 设计与实现

当前企业求职招聘的方式更多是通过传统的线下招聘会或职业介绍所来实现的,其不但受众具有很大的局限性,而且往往不可能在短时间内招聘的需要的人才。而互联网的普及为企业求职招聘的方式带来了翻天覆地的改变。通过互联网将招聘信息进行发布可以在短时间…

(1)(1.13) SiK无线电高级配置(五)

文章目录 前言 10 可用频率范围 11 DUTY_CYCLE 设置 12 低延迟模式 13 先听后说 (LBT) 14 升级无线电固件 15 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 1…

Web缓存代理

目录 一.Web缓存代理 配置Nginx 缓存代理: 修改web服务器的配置文件: 修改192.168.233.10代理服务器的配置文件: 访问页面看看: 对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来…

STL-vector

目录 1.vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.3 vector 增删查改 1.2.4 vector 迭代器失效问题。(重点) 1. 会引起其底层空间改变的操作&#x…

C++:多态究竟是什么?为何能成为面向对象的重要手段之一?

C:多态究竟是什么?为何能成为面向对象的重要手段之一? 前言一、多态的概念二、多态的定义及实现2.1 多态的构成条件2. 2 虚函数2.3 虚函数的重写2.3.1 虚函数重写的例外1:协变(基类与派生类虚函数返回值类型不同)2.3.2 虚函数重写…

【信息论与编码】【北京航空航天大学】实验一、哈夫曼编码【C语言实现】(上)

信息论与编码 实验1 哈夫曼编码 实验报告 一、运行源代码所需要的依赖&#xff1a; 1、硬件支持 Windows 10&#xff0c;64位系统 2、编译器 DEV-Redpanda IDE&#xff0c;小熊猫C 二、算法实现及测试 1、C语言源程序 # define _CRT_SECURE_NO_WARNINGS # include <std…

江山易改本性难移之ZYNQ SDK FSBL加载启动代码详解

SDK版本&#xff1a;2018.3 写在前面&#xff1a; 该文档不足以使你清楚FSBL启动的寄存器级的操作细节&#xff0c;但可以让你看明白整个ZYNQ7000 FSBL代码执行的主要流程。 1. ZYNQ7000加载启动流程 &#xff08;1&#xff09;BootRom阶段为ARM上电后最早加载的代码&#x…

Android SDK环境搭建

一、Android SDK简介 SDK&#xff1a;&#xff08;software development kit&#xff09;软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 因此&#xff0c;Android SDK 指的是Android专属的软件…

【Scala】——函数式编程

1 面向对象编程和函数式编程 1.1 面向对象编程 解决问题&#xff0c;分解对象&#xff0c;行为&#xff0c;属性&#xff0c;然后通过对象的关系以及行为的调用来解决问题。 • 对象&#xff1a;用户 • 行为&#xff1a;登录、连接 JDBC、读取数据库 • 属性&#xff1a;用户…

内裤洗衣机有用吗?五款小型洗衣机全自动推荐

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

Linux运维之切换到 root 用户

春花秋月何时了,往事知多少。此付费专栏不要订阅,不要订阅,听人劝。 🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目实战] 介绍Java…

C/C++ 位段

目录 什么是位段&#xff1f; 位段的内存分配 位段的跨平台问题 什么是位段&#xff1f; 位段的声明与结构是类似的&#xff0c;但是有两个不同&#xff1a; 位段的成员必须是 int、unsigned int 或signed int 等整型家族。位段的成员名后边有一个冒号和一个数字 这是一个…