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

news2024/11/24 20:45:15

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

  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.coloradmin.cn/o/1257992.html

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

相关文章

Java(八)(可变参数,Collections,小案例:斗地主游戏小案例:斗地主游戏,Map集合,Stream流)

目录 可变参数 Collections 小案例:斗地主游戏 Map集合 Map的常用方法 map集合的遍历 键找值 键值对 Lambda 表达式 HashMap底层原理 集合的嵌套 Stream流 获取集合或数组的Stream流 Stream流的方法 可变参数 就是一种特殊的形参,定义在方法和构造器的形参列表中,…

视频没有字幕怎么办,怎么给视频增加字幕

文章目录 视频没有字幕怎么办,怎么给视频增加字幕前言软件准备制作字幕1. 导入视频2. 将视频拖拽到轨道3. 生成字幕4. 导出字幕 字幕实时翻译1. 播放视频2. 显示字幕设置3. 双语字幕显示 总结 视频没有字幕怎么办,怎么给视频增加字幕 前言 有时候下载的…

传音荣获2023首届全国人工智能应用场景创新挑战赛“智能家居专项赛”三等奖

近日,中国人工智能学会与科技部新一代人工智能发展研究中心联合举办2023首届全国人工智能应用场景创新挑战赛(2023 1st China’s Innovation Challenge on Artificial Intelligence Application Scene,以下简称CICAS 2023),吸引了…

10 个例子带你学会 AI 编程(含提示词)

大家好,我是伍六七。 AI 编程是一个程序员群体普遍关注的领域,但是真的使用 AI 编程实现提效的还是少数。 有的人没有大模型资源,有的人不知道可以在哪些方面使用 AI 进行提效,还有的人不相信使用 AI 可以提效。 今天&#xff…

国产Ai大模型和chtgpt3.5的比较

下面是针对国产大模型,腾讯混元,百度文心一言,阿里通义千问和chatgpt的比较,最基础的对一篇文章的单词书进行统计,只有文心一言和chatgpt回答差不多,阿里和腾讯差太多了

【机器学习】迁移学习

迁移学习:给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识,来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性,利用在源领域中学习到的知…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——Eigen库 本章将介绍视觉SLAM的基本问题之一:如何…

【开源】基于JAVA的天然气工程运维系统

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

Win11修改用户名(超详细图文)

新买的电脑一般预装Windows11系统(家庭与学生版),新电脑初次开机使用微软邮箱账号登录,则系统将用户名自动设置成邮箱前5位字符。我的用户名便是一串数字【231xx】(qq邮箱前5位),看着很不舒服&a…

Docker搭建个人网盘NextCloud并接入雨云对象存储的教程

雨云服务器使用Docker搭建私有云盘NextCloud并接入雨云对象存储ROS的教程。 NextCloud简介 NextCloud由原ownCloud联合创始人Frank Karlitschek创建的,继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多,甚至还要丰富一些&a…

C语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

分析: 在主函数 main 中,程序首先定义一个字符变量 c,以及四个整型变量 letters、k、s 和 o,并初始化它们的值为 0。然后使用 printf 函数输出提示信息,让用户输入一行字符。 接下来,程序通过 while 循环结…

编程难点:常见问题及解决方案

目录 1 前言2 学习成本高2.1 学习成本高的问题2.2 学习成本高的解决方法 3 程序bug多3.1 程序bug多的问题 4 程序的性能调试4.1 程序的性能问题4.1 程序的性能调试方法 5 跨平台兼容性差5.1 跨平台兼容问题5.1 跨平台兼容问题的解决方法 6 解决技术难题的方法总结7 总结 1 前言…

pikachu靶场:php反序列化漏洞

pikachu靶场:php反序列化漏洞 文章目录 pikachu靶场:php反序列化漏洞代码审计漏洞利用 代码审计 像这种反序列化的代码基本都是代码审计出的 // 定义一个名为S的类,该类有一个属性$test和一个构造函数 class S{ var $test "pikachu"; // $test是一个…

大数据平台/大数据技术与原理-实验报告--实战HDFS

实验名称 实战HDFS 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.23-2023.10.27 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统的linu…

SIFT尺度不变特征变换

SIFT(Scale-Invariant Feature Transform)是一种用于图像处理和计算机视觉中的特征提取和匹配的算法。它的主要优点是对图像的尺度、旋转和亮度变化具有较强的鲁棒性。 基本原理: Scale-space peak selection: Potential location for finding features.Keypoint Localizat…

NX二次开发UF_CURVE_ask_parameterization 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_parameterization Defined in: uf_curve.h int UF_CURVE_ask_parameterization(tag_t object, double param_range [ 2 ] , int * periodicity ) overview 概述 Retu…

视频做成二维码的简易教程(收藏)

视频做成二维码的简易教程,由于面向免费用户是5G,普通用户是可以够用的,所以可以推荐给大家,值得一试 以下几点,是您需要了解的: 01.稳定流畅 提供高稳定性,超流畅的企业级视频服务 02.节省成…

qt国际化多语言

vs + qt 方法 一 (1)生成.pro文件 如果报错: cannot find any qt projects to export 则执行如下: 然后重新生成 pro文件。 (2)生成ts文件 (方法1)在项目文件(xxx.pro) 文件添加: TRANSLATIONS += en.ts zh_CN.ts 然后打开cmd命令,进入项目目录,执行 l…

Vue路由器(详细教程)

路由: 1.理解:一个路由(route)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理。 2.前端路由:key是路径,value是组件。 1、先安装vue-router路由 npm i vue-route…

2023年汉字小达人市级比赛才知道消息?请查收最后三天的备考策略

这两天有家长联系六分家长,说语文老师刚刚通知他们孩子晋级了2023年第十届上海小学生汉字小达人比赛的市级活动(实际比赛),该如何准备? 六分成长发现这些家长还有好几个呢。经过和家长了解,发现是孩子的语…