Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。

  1. 什么是字符编码

计算机从本质上来说只认识二进制中的0和1,字符编码(Character Encoding) 是一种将字符映射为特定二进制模式的系统,它允许计算机以统一的方式存储和处理字符,无论是字母、数字、符号还是特殊字符。可以说任何数据在计算机中实际的物理表现形式也就是0和1,字符编码的目的是为了方便计算机处理和存储文本。常见的字符编码包括ASCII、UTF-8、GBK等。字符编码通常将字符集中的每个字符映射为一个或多个字节(binary digits),这些字节可以被计算机理解和操作,以实现文本的存储、传输和处理。

  • ASCII

ASCII (American Standard Code for nformation lnterchange美国信息交换标准代码)是最常用的字编码标准之一它为每个字符定义了一个对应的唯一的二进制编码,使得计算机可以方便地存储、传输和处理文本数据。

ASCII编码是最早的字符编码标准,它只包含128个字符,包括大小写英文字母、数字、标点符号和控制字符。它的每个字符都对应一个唯一的7位二进制数。

ASCI编码的用途非常广泛,它是计算机内部处理文本数据的基础。例如,在计算机之间传输文本数据时发送方和接收方需要使用相同的字符编码标准才能正确地解析和处理数据。ASC1编码也是很多其他字符编码标准的基础,例如:UTF-8编码就是基于ASCII编码扩展而来的。

  • ​​​​​​​Unicode

Unicode字符编码标准,它旨在为全球范围内的所有字符提供一个统一的编码系统Unicode使用一个二进制数值来表示每个字符,这样就可以确保每个字符在全球范围内具有唯一的表示这种统一的编码方式使得在不同平台、不同语言之间交换和处理文本数据成为可能。

Unicode编码通常使用一个特定的编码方案来实现,最常见的Unicode编码方案是UTF-8.它是一种可变长度的编码方式。UTF-8使用1到4个字节来表示一个字符,其中一些字节组合用来表示一些常用的字符这样可以提高编码效率,应用过程使用了\u来指示这是一个Unicode转义序列。

  • ​​​​​​​UTF-8

UTF-8 (Unicode Transformation Format-8 bits)是一种可变长度的Unicode编码方案它用于将字符映射为字节序列.

UTF-8编码具有以下特点:

  1. 兼容性: UTF-8完全兼容ASCII编码、即ASCI字符在UTF-8中的编码和ASCII相同变长编码:
  2. UTF-8使用1到4个字节来表示一个字符,这使得它可以表示广泛的字符集,包括世界上几乎所有的语言字符向前兼容:
  3. UTF-8的设计使得旧的UTF-8编码在新的版本中保持不变,这使得UTF-8在不断进的过程中然保持兼容性

  • ​​​​​​​GB2312

GB2312字符编码标准,主要是为了解决汉字在计算机中使用的问题。这是中国国家标准化管理局(GB)制定的一种简体中文字符集编码标准,用于将汉字和其他字符编码为二进制格式以便在计算机系统中使用。

  • ​​​​​​​ISO-8859

ISO-8859字符编码标准,定义了不同标准字符集的编码规则,用于将字符编码为二进制格式,以便在计算机系统中使用,ISO-8859是为了解决ASCII编码无法表示多种语言和特殊字符的问题而设计的,ISO-8859编码在文本传输和网页设计中得到了广泛应用,在邮件传输中,它通常用于SMTP协议和POP3协议以支持多种语言和特殊字符的传输。

2.​​​​​​​如何处理字符编码

在使用Python处理字符编码问题时,以下是一些常见的方法:

  1. 字符串编码与解码:可以使用字符串的encode()方法将字符串编码为指定的编码格式使用decode()方法将已编码的字符串解码为指定的编码格式
  2. 处理转码错误: 在进行编码转换时,如果遇到无法解码或编码的字符.可能会引发UnicodeDecodeError 或UnicodeEncodeError可以使用errors 参数来处理这些错误,常见的处理方式包括 ignore(忽略错误)、 replace(用占位符代替错误字符)等.

将汉字通过ASCii转码,由于ASCii不能转汉字,肯定会报错,可以选择Errors来操作,如下代码:

结果:

  1. 当文本文件包含中文字符时,可能会出现乱码或其他显示问题。这通常是因为中文字符编码使用了与Python解释器不兼容的字符编码,要解决这个问题,可以指定文件的编码方式为UTF-8,并使用codecs.open()函数打开文件.

使用CodeCs库,将一个文件按照UTF-8的格式打开,并打印出来,代码如下:

结果:

  1. 无法正确读取二进制数据: 当尝试使用codecs.open()函数读取二进制数据时,可能会出现错误,这是因为codecs.open()函数默认将文件视为文本文件,要解决这个问题,可以使用二进制模式打开文件,例如使用codecs.open()函数的encoding=None参数并使用二进制模式打开文件。

​​​​​​​​​​​​​​3、总结

  1. 了解字符编码的基本概念:学习Python应用字符编码之前,你需要了解字符编码的基本概念这包括ASCII码、Unicode、UTF-8等
  2. 学习Python内置的编码支持: Python内置了对多种字符编码的支持,包括UTF-8了解Python如何处理字符编码可以帮助你更好地理解如何应用字符编码
  3. 使用Python内置的字符编码函数: Python提供了许多内置的函数来处理字符编码,例如encode()和decode()了解这些函数以及如何使用它们可以帮助更好地应字符编码。
  4. 阅读官方文档和教程: Python官方文档提供了详细的关于字符编码的说明和教程阅读这些文档可以帮助你更好地理解Python应用字符编码的方式
  5. 多多实践: 最好的学习方式是实践,尝试使用Python编写包含字符编码的代码并尝试不同的编码方式来加深对字符编码的理解。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Bitmap 模糊效果实现 (二)

文章目录 Android Bitmap 模糊效果实现 (二)使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 模糊效果实现 (二) 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134656140 最新更新地址 https:/…

便利高效双赢:无人机油气管道巡检全面升级

我国庞大的油气管道网络,包括原油、成品和天然气管道,因为地理区域广泛、建设年代久远、安全事故频发等现实因素,对管道的安全巡护与管理提出了更高的需求。在这一背景下,传统的人工巡护方式显然已经难以满足对高、精、准的要求。…

antd vue a-select 下拉框位置偏移

问题 下拉框未固定 原因 select下拉框的定位是根据body定位 解决方法 在select 标签中添加: :getPopupContainer"(triggerNode) > (triggerNode.parentElement)" :getPopupContainer"(triggerNode) > (triggerNode.parentElement)"…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当前命…

【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

在Linux系统中先安装java的JDK 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可 # 配置运行日志输出的路径 export log_path/usr/local/project/study-pro/logs # 当前服务运行的脚本命令 export exec_cmd"nohup /u…

redis-cluster集群

redis3.0引入的分布式存储方案 集群由多个node节点组成,redis数据分布在这些节点之中,在集群之中分为主节点和从节点 数据流程图 redis-cluster集群的工作模式 集群模式当中,主从一一对应,数据写入和读取与主从模式一样&#x…

<Linux> 文件理解与操作

目录 前言: 一、关于文件的预备知识 二、C语言文件操作 1. fope 2. fclose 3. 文件写入 3.1 fprintf 3.2 snprintf 三、系统文件操作 1. open 2. close 3. write 4. read 四、C文件接口与系统文件IO的关系 五、文件描述符 1. 理解文件描述符 2. 文…

蓝桥杯官网算法赛(蓝桥小课堂)

问题描述 蓝桥小课堂开课啦! 海伦公式(Herons formula),也称为海伦-秦九韶公式,是用于计算三角形面积的一种公式,它可以通过三条边的长度来确定三角形的面积,而无需知道三角形的高度。 海伦公…

同旺科技 USB 转 RS-485 适配器 -- 隔离型

内附链接 1、USB 转 RS-485 适配器 隔离版主要特性有: ● 支持USB 2.0/3.0接口,并兼容USB 1.1接口; ● 支持USB总线供电; ● 支持Windows系统驱动,包含WIN10 / WIN11 系统32 / 64位; ● 支持Windows …

必备极速下载工具 — aria2

必备极速多线程并行下载工具 — aria2 aria2 是一款免费开源跨平台且不限速的多线程下载软件,其优点是速度快、体积小、资源占用少;支持 HTTP / FTP / BT / Magnet 磁力链接等类型的文件下载;支持 Win、Mac、Linux 系统,甚至在树莓…

Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求

一、Http简介 HTTP(Hypertext Transfer Protocol)是一种用于在Web应用程序之间进行通信的协议,通过运输层的TCP协议建立连接、传输数据。Http通信数据以报文的形式进行传输。Http的一次事务包括一个请求和一个响应。 Http通信是基于客户端-服…

黑马React18: ReactRouter

黑马React: ReactRouter Date: November 21, 2023 Sum: React路由基础、路由导航、导航传参、嵌套路由配置 路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候,path 对应的组件会在页面中进行渲染 2. …

掌握你的Mac,iStat Menus带你了解mac系统状态

iStat Menus for mac是一款强大的mac系统状态监控工具,它能够提供实时的系统信息和性能监测,帮助用户全面了解和管理自己的Mac设备。无论是CPU、内存、网络、硬盘还是传感器数据,iStat Menus都能直观地展示,并且支持自定义布局和样…

easyExcel 注解开发 快速以及简单上手 以及包含工具类

easyExcel 简单快速使用 1. mevan 这里版本我这里选的是 poi 4.1.2和 ali的easyexcel 的 3.3.1。 因为阿里easy是根据poi的依赖开发的有关系,两者需要对应要不然就会有很多bug和错误在运行时发生。需要版本对应,然而就是easy的代码也会有bug这个版本是比…

什么软件可以去视频水印?分享3个超实用去水印工具

什么软件可以去视频水印?短视频已然成为了我们日常生活或工作的一部分,当我们遇到感兴趣的视频想保存发现无法保存,或者保存后留有水印,非常影响我们视频观看度和分享欲,为了解决这一问题,许多针对视频水印…

基于单片机预费电表控制系统(proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、采集电量值送到液晶1602显示。 3、按键设置预设值,实际使用电量超过设置,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void LCD_init(void) { …

MySQL数据库【一】

博学而笃志,切问而近思 文章目录 数据库简介服务器、数据库以及表的关系连接数据库数据库操作命令创建数据库查看数据库创建语句查看数据库使用数据库修改数据库删除数据库 数据库字符集和校验规则查看系统默认字符集查看系统默认校验规则查看数据库支持的字符集查看…

Shell编程基础 – for循环

Shell编程基础 – for循环 Shell Scripting Essentials - for Loop 大多数编程语言都有循环的概念和语句。如果想重复一个任务数十次,无论是输入数十次,还是输出数十次,对用户来说都不现实。 因此,我们考虑如何用好Bash Shell编…

Python入门学习篇(四)——if详解

if详解 1 单项分支 1.1 语法结构 if 条件:逻辑代码(条件为真时执行的代码) # 注: 如果条件不满足,那么则不执行if下面的逻辑代码1.2 示例代码 username input("请输入您的用户名: ") if username "admin":print("管理员登录成功")1.3 运行…