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.mzph.cn/news/178397.shtml

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

相关文章

大数据-之LibrA数据库系统告警处理(ALM-37006 Coordinator进程异常)

告警解释 当出现如下情况时,产生该告警: CN所在机器发生硬件故障(断电、硬盘损坏等)。CN实例数据目录中的postgresql.conf配置文件不存在或者其中某个配置参数不正确。CN实例线程无法监听IP,或者无法绑定监听端口。C…

【Makefile】和【CMake】的区别

Makefile 和 CMake 的区别 Makefile 和 CMake 都是用于构建项目的工具,但它们有一些区别。 Makefile: 语法: Makefile 使用自己的语法规则,包括规则、目标、依赖等。这是一种特定于 make 工具的语法。 平台依赖: Makefile 是平…

【JavaScript框架】Vue与React中的组件框架概念

组件框架是用于构建应用程序的工具,以便将UI和逻辑划分为单独的可重用组件。目前的组件框架包括React、Vue、Angular、Ember、Svelte等。 Vue和React使用了常见的框架概念,如处理状态、道具、引用、生命周期挂钩、事件等。这两个框架在当今的web开发中被…

案例:某电子产品电商平台借助监控易保障网络正常运行

一、背景介绍 某电子产品电商平台是一家专注于电子产品销售的电商平台,拥有庞大的用户群体和丰富的产品线。随着业务规模的不断扩大,网络设备的数量和复杂性也不断增加,网络故障和性能问题时有发生,给平台的稳定运行带来了很大的挑…

项目中高并发如何处理

在项目中处理高并发主要需要考虑以下几个方面的策略: 优化数据库设计:使用合适的数据结构、索引和查询优化技术可以显著提高数据库的响应性能;分库分表使用缓存:缓存是一种非常有效的处理高并发的方法。通过将常用的数据或结果保…

[原创][第I部分][编程基础]我的C++ 98复习并升级到C++20的复习旅途

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

python激活python38

py38是我建立的anaconda下的一个python3.8环境。 命令行里使用conda activate py38会出现: conda activate error: argument COMMAND: invalid choice 因为condat已经移除了该命令。 执行 activate py38没报错,但是没有转换到py38环境。 使用 sour…

Spring源码解读之创建bean

本文章我们会解读一下Spring如何根据beanDefinition创建bean的; 代码入口: AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(AppConfig.class);applicationContext.refresh(); 当spring执行refresh(…

关于ai大模型是否开源的讨论

开源和闭源,两种截然不同的开发模式,对于大模型的发展有着重要影响。开源让技术共享,吸引了众多人才加入,推动了大模的创新。而闭源则保护了商业利益和技术优势,为大模型的商业应用提供了更好的保障。 一、开源和闭源的…

人工智能学习1

一.人工智能概述 1.AI的基础学科包括:数学(离散、模糊)、思维科学(认知心理、逻辑思维学、形象思维学)和计算机(硬件、软件)等。 2.新一代人工智能呈现出“深度学习、跨界融合、人机协同、群智…

Jmeter+influxdb+grafana监控平台在windows环境的搭建

原理:Jmeter采集的数据存储在infuxdb数据库中,grafana将数据库中的数据在界面上进行展示 一、grafana下载安装 Download Grafana | Grafana Labs 直接选择zip包下载,下载后解压即可,我之前下载过比较老的版本,这里就…

单机多卡训练

参考几个不错的帖子(还没来得及整理): 基于pytorch多GPU单机多卡训练实践_多卡训练效果不如单卡-CSDN博客 关于PyTorch单机多卡训练_能用torch.device()实现多卡训练吗-CSDN博客 Pytorch多机多卡分布式训练 - 知乎 (zhihu.com) 当代研究生…

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性,让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量,SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作,T-POP Incorporation 是泰国流行文化在全球舞台上的领…

【算法】快速选择算法

目录 1.概述2.代码实现2.1.基于简单交换排序2.2.基于堆排序2.3.基于快速排序 3.应用 更多数据结构与算法的相关知识可以查看数据结构与算法这一专栏。 1.概述 (1)快速选择算法 (Quick Select Algorithm) 是一种用于在无序数组中寻找第 k 小(…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角,鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势,并详细介绍一些关键的鸿蒙开发技术和工具,以及它们对开发者个人和整个行业带来的深远影响。 首先,鸿蒙…

入侵redis之准备---VMware安装部署kail镜像服务器【详细包含云盘镜像】

入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 kail是一个很好玩的操作系统,不多说了哈 下载kail镜像 kail官网:https://www.kali.org/get-kali/#kali-platforms 百度云盘下载: 链接:https://pan.baidu.com/s/1PRjo…

django框架ORM

1、安装mysqlclient pip install mysqlclient2、创建文件models.py from django.db import modelsclass UserInfo(models.Model):name models.CharField(max_length32)password models.CharField(max_length64)age models.IntegerField(3)3、再settings中注册app INSTALLE…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能(Embodied Intelligence)指的是机器人或智能体通过感知、理解和交互来适应环境,并执行任务的能力。与传统的基于规则或符号的人工智能不同,具身智能强调将感…

基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现私人健身与教练预约管理系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应…

克服海外邮件收发难题,Coremail提供全方位解决方案

客户背景 某3C电子企业成立于2007年,总部位于深圳,公司在国内多个重点城市均设有研发和生产基地。作为一家规模庞大、技术领先的国家高新技术企业,该企业始终致力于锂离子电池的研究与发展,为新能源行业提供专业、系统的材料解决…