首页 > 编程语言 >Python中级之字符编码

Python中级之字符编码

时间:2023-12-06 17:46:03浏览次数:43  
标签:编码 UTF 字符 Python Unicode ASCII

ASKII码

GBK/SHIFT-JIS

UNICODE

字符编码

【一】什么是字符编码

  • 人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等
    • 而计算机只能识别二进制数
  • 二进制数即由0和1组成的数字,例如010010101010
  • 计算机是基于电工作的,电的特性即高低电平
  • 人类从逻辑层面将高电平对应为数字1,低电平对应为数字0,这直接决定了计算机可以识别的是由0和1组成的数字
  • 在计算机中,所有的信息都以二进制形式存储,包括文本。而字符编码定义了如何将字符映射到二进制数据。
  • 字符编码就是一种将字符集中的字符映射到数字(编码)的规则或方案
  • 编码是将数据从一种形式(通常是人类可读的形式)转换为另一种形式(通常是计算机可处理的形式)的过程。
  • 解码是将经过编码的数据重新转换回原始形式的过程。在字符编码的上下文中,解码通常是指将二进制数据转换回字符或文本的过程。
  • 在编码和解码的过程中,确保使用相同的字符编码规则是非常重要的,以免产生乱码或错误的解释。

【二】字符编码的发展

  1. ASCII 编码(1963年):
    • 定义: 美国信息交换标准代码(ASCII)是最早的字符编码之一,使用 7 位二进制数表示 128 个字符,包括基本的拉丁字母、数字 0-9、标点符号和一些控制字符。
    • 局限性: ASCII 编码仅包含有限的字符集,适用于英语和部分西欧语言,无法满足全球化需求。
  2. 扩展 ASCII 编码(1980年代初):
    • 定义: 为了满足更多字符需求,一些扩展 ASCII 编码标准(如ISO-8859系列)出现,使用 8 位二进制数,允许表示 256 个字符。
    • 局限性: 扩展 ASCII 依然无法满足全球范围的字符需求,每个国家或地区的字符集不同。
  3. Unicode 标准(1991年):
    • 定义: Unicode 是一个为全球范围内的字符集设计的字符编码标准。它的目标是覆盖世界上所有的语言和符号,并为每个字符分配一个唯一的编码值。
    • 特点: Unicode 使用多字节编码,为不同字符提供了不同的表示。最早的 Unicode 版本使用两个字节,后来扩展到四个字节。Unicode 标准还定义了各种字符的不同表示形式,如 UTF-8、UTF-16 和 UTF-32。
  4. UTF-8 编码(1992年):
    • 定义: 为了解决多字节编码的存储和传输问题,Unicode 引入了 UTF-8 编码方案。UTF-8 使用可变长度的编码,可以根据字符的不同范围选择使用 1 到 4 个字节。
    • 特点: UTF-8 编码在表示英文字符时与 ASCII 兼容,因此在处理英文文本时更为节省空间,同时也支持全球字符集。

字符编码的发展是为了适应全球化的需求,确保能够准确表示和传输不同语言和符号。Unicode 及其不同的编码形式如 UTF-8 在当前广泛应用于各种计算机系统和互联网通信中。

  • ASKII码表
    • 202311182013909

总结:

  • Unicode 是字符集标准,定义了字符的唯一标识符。
  • UTF-8 是 Unicode 的一种具体实现方式,是一种可变长度的字符编码,用于在计算机中存储和传输 Unicode 字符。
  • Unicode 提供了字符的唯一标识,而 UTF-8 提供了字符的具体编码方式。UTF-8 是 Unicode 的一种实现,不同的实现方式还包括 UTF-16、UTF-32 等。

在实践中,UTF-8 是一种常用的字符编码,特别是在 Web 开发和互联网通信中,因为它兼容 ASCII,同时支持全球字符集,使得文本数据的处理更加灵活和高效。

ef90dcfce8036e440018377a3943afa

【三】字符编码的应用

在 Python 中,字符编码的应用场景非常广泛,涵盖了多个领域。以下是一些常见的 Python 中字符编码的应用场景:

  1. 文本处理和文件操作:
    • 在读取或写入文本文件时,需要考虑文件的字符编码,以确保正确地解析和显示文本内容。
    • 使用 Python 内建的 open() 函数时,可以指定文件的编码,例如:open('file.txt', 'r', encoding='utf-8')
  2. 网络通信:
    • 在进行网络通信时,特别是在处理 HTTP 请求和响应时,需要考虑字符编码。HTTP 头中通常包含字符编码信息,以指示文本内容的编码方式。
    • 使用 Python 的网络库(如 requests)时,可以通过检查响应头来确定字符编码,或者使用 response.encoding 进行手动设置。
  3. 数据库操作:
    • 当与数据库交互时,需要注意数据库中存储和检索的文本数据的字符编码。
    • 在使用数据库连接库(如 MySQLdbpsycopg2)时,可以设置连接的字符编码,以确保与数据库的正确交互。
  4. 字符串处理和正则表达式:
    • 在进行字符串处理和正则表达式匹配时,字符编码可能会影响匹配结果。
    • Python 的字符串操作和正则表达式库通常能够处理不同字符编码的文本,但在特定场景下需要格外注意。
  5. Web 开发:
    • 在 Web 开发中,字符编码非常重要,特别是在处理用户输入、数据库交互和页面渲染时。
    • 使用框架(如 Flask、Django)时,通常可以配置字符编码,以适应应用的需求。
  6. 数据处理:
    • 在处理数据文件、CSV 文件等时,字符编码也需要考虑,以确保数据的正确读取和写入。
    • 在使用 pandas 等数据处理库时,通常能够处理不同字符编码的数据。

总体而言,字符编码在 Python 中的应用涵盖了从文本处理到网络通信、数据库操作、字符串处理等多个方面。正确处理字符编码有助于避免乱码问题,确保数据在不同环境中正确地传递和解释。

标签:编码,UTF,字符,Python,Unicode,ASCII
From: https://www.cnblogs.com/Lea4ning/p/17880133.html

相关文章

  • Python中级之可变数据类型和不可变数据类型
    【一】可变数据类型对于可变类型(如字典、列表、集合),在函数中修改参数会影响原始对象。当你对于可变类型进行修改操作,并不会返回内容,而是将原本的内容进行了更新#字典(dict)dict1={'a':1,'b':2}dict1.update({'c':2})print(dict1)#{'a':1,'b':2,'c':2}#......
  • 【转】How to type pythonic codes
    谈到规范首先想到就是Python有名的PEP8代码规范文档,它定义了编写Pythonic代码的最佳实践。可以在 python.org/dev/peps/pep 上查看。但是真正去仔细研究学习这些规范的朋友并不是很多,对此呢这篇文章摘选一些比较常用的代码整洁和规范的技巧和方法,下面让我们一起来学习吧!......
  • 为什么 idea 建议去掉 StringBuilder,使用“+”拼接字符串
    为什么idea建议去掉StringBuilder,使用“+”拼接字符串目录为什么idea建议去掉StringBuilder,使用“+”拼接字符串1、普通拼接2、循环拼接总结各位小伙伴在字符串拼接时应该都见过下面这种提示:内容翻译:报告StringBuffer、StringBuilder或StringJoiner的任何用法,这些用法......
  • 软件测试/人工智能|Python逻辑运算符如何灵活使用
    前言当初学者探索Python编程时,理解逻辑运算符是掌握编程逻辑和决策流程的重要一环。逻辑运算符允许我们对多个条件进行组合,以便进行更复杂的逻辑判断。让我们深入了解Python中常用的逻辑运算符及其使用方法。逻辑运算符逻辑运算符一般用来解决当有多个关系条件需要判断时使用,......
  • 软件测试/人工智能|Python赋值运算符如何灵活使用
    前言赋值运算符是使用=为运算符号,将运算符左侧的数据或表达式的结果,保存到运算符左侧的标识符中。在使用赋值运算符时,运算符右侧可以是任意类型的数据,但左侧必须是一个变量,否则会报错。除普通的赋值运算符外,赋值运算符还可以和算术运算符组合成为复合赋值运算符。赋值运算符不仅仅......
  • 软件测试/人工智能|一篇文章教你把Python关系运算符玩出花样
    简介关系运算符也称为比较运算符,用来对参与运算的两个操作数进行比较,确认两个操作数之间的关系,运算结果会返回一个布尔值。让我们深入了解Python中常用的关系运算符及其使用方法。Python中提供的关系运算符如下表所示:等于和不等于==检查两个值是否相等。!=检查两个值是否不相等......
  • 软件测试/人工智能|Python逻辑运算符如何灵活使用
    前言当初学者探索Python编程时,理解逻辑运算符是掌握编程逻辑和决策流程的重要一环。逻辑运算符允许我们对多个条件进行组合,以便进行更复杂的逻辑判断。让我们深入了解Python中常用的逻辑运算符及其使用方法。逻辑运算符逻辑运算符一般用来解决当有多个关系条件需要判断时使用,用来确......
  • python HTML文件标题解析问题的挑战
    引言在网络爬虫中,HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息,但是在实际操作中,我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题,并提供解决方案。问题背景在解析HTML文件标题的过程中,......
  • python里:引号外面的r、f、u的意思
    加'f'表示格式化字符串举例x=77y=99print(f'{x}+{y}={0}'.format(x+y))#加f后可以在字符串里面使用用花括号括起来的变量和表达式加'r'是防止字符转义如果路径中出现'\t'的话不加r的话\t就会被转义而加了'r'之后'\t'就能保留原有的样子在字符串赋值的时候前面加'r......
  • Leetcode刷题day7-字符串.反转ⅠⅡ.反转单词.右旋转
    344.反转字符串344.反转字符串-力扣(LeetCode)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。示例1:输入:s=["h","e","l","l","o"]输......