ASKII码
GBK/SHIFT-JIS
UNICODE
字符编码
【一】什么是字符编码
- 人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等
- 而计算机只能识别二进制数
- 二进制数即由0和1组成的数字,例如010010101010
- 计算机是基于电工作的,电的特性即高低电平
- 人类从逻辑层面将高电平对应为数字1,低电平对应为数字0,这直接决定了计算机可以识别的是由0和1组成的数字
- 在计算机中,所有的信息都以二进制形式存储,包括文本。而字符编码定义了如何将字符
映射
到二进制数据。 - 字符编码就是一种将字符集中的字符映射到数字(编码)的
规则或方案
。 编码
是将数据从一种形式(通常是人类可读的形式)转换为另一种形式(通常是计算机可处理的形式)的过程。解码
是将经过编码的数据重新转换回原始形式的过程。在字符编码的上下文中,解码通常是指将二进制数据转换回字符或文本的过程。- 在编码和解码的过程中,确保使用相同的字符编码规则是非常重要的,以免产生乱码或错误的解释。
【二】字符编码的发展
- ASCII 编码(1963年):
- 定义: 美国信息交换标准代码(ASCII)是最早的字符编码之一,使用 7 位二进制数表示 128 个字符,包括基本的拉丁字母、数字 0-9、标点符号和一些控制字符。
- 局限性: ASCII 编码仅包含有限的字符集,适用于英语和部分西欧语言,无法满足全球化需求。
- 扩展 ASCII 编码(1980年代初):
- 定义: 为了满足更多字符需求,一些扩展 ASCII 编码标准(如ISO-8859系列)出现,使用 8 位二进制数,允许表示 256 个字符。
- 局限性: 扩展 ASCII 依然无法满足全球范围的字符需求,每个国家或地区的字符集不同。
- Unicode 标准(1991年):
- 定义: Unicode 是一个为全球范围内的字符集设计的字符编码标准。它的目标是覆盖世界上所有的语言和符号,并为每个字符分配一个唯一的编码值。
- 特点: Unicode 使用多字节编码,为不同字符提供了不同的表示。最早的 Unicode 版本使用两个字节,后来扩展到四个字节。Unicode 标准还定义了各种字符的不同表示形式,如 UTF-8、UTF-16 和 UTF-32。
- UTF-8 编码(1992年):
- 定义: 为了解决多字节编码的存储和传输问题,Unicode 引入了 UTF-8 编码方案。UTF-8 使用可变长度的编码,可以根据字符的不同范围选择使用 1 到 4 个字节。
- 特点: UTF-8 编码在表示英文字符时与 ASCII 兼容,因此在处理英文文本时更为节省空间,同时也支持全球字符集。
字符编码的发展是为了适应全球化的需求,确保能够准确表示和传输不同语言和符号。Unicode 及其不同的编码形式如 UTF-8 在当前广泛应用于各种计算机系统和互联网通信中。
- ASKII码表
总结:
- Unicode 是字符集标准,定义了字符的唯一标识符。
- UTF-8 是 Unicode 的一种具体实现方式,是一种可变长度的字符编码,用于在计算机中存储和传输 Unicode 字符。
- Unicode 提供了字符的唯一标识,而 UTF-8 提供了字符的具体编码方式。UTF-8 是 Unicode 的一种实现,不同的实现方式还包括 UTF-16、UTF-32 等。
在实践中,UTF-8 是一种常用的字符编码,特别是在 Web 开发和互联网通信中,因为它兼容 ASCII,同时支持全球字符集,使得文本数据的处理更加灵活和高效。
【三】字符编码的应用
在 Python 中,字符编码的应用场景非常广泛,涵盖了多个领域。以下是一些常见的 Python 中字符编码的应用场景:
- 文本处理和文件操作:
- 在读取或写入文本文件时,需要考虑文件的字符编码,以确保正确地解析和显示文本内容。
- 使用 Python 内建的
open()
函数时,可以指定文件的编码,例如:open('file.txt', 'r', encoding='utf-8')
。
- 网络通信:
- 在进行网络通信时,特别是在处理 HTTP 请求和响应时,需要考虑字符编码。HTTP 头中通常包含字符编码信息,以指示文本内容的编码方式。
- 使用 Python 的网络库(如
requests
)时,可以通过检查响应头来确定字符编码,或者使用response.encoding
进行手动设置。
- 数据库操作:
- 当与数据库交互时,需要注意数据库中存储和检索的文本数据的字符编码。
- 在使用数据库连接库(如
MySQLdb
、psycopg2
)时,可以设置连接的字符编码,以确保与数据库的正确交互。
- 字符串处理和正则表达式:
- 在进行字符串处理和正则表达式匹配时,字符编码可能会影响匹配结果。
- Python 的字符串操作和正则表达式库通常能够处理不同字符编码的文本,但在特定场景下需要格外注意。
- Web 开发:
- 在 Web 开发中,字符编码非常重要,特别是在处理用户输入、数据库交互和页面渲染时。
- 使用框架(如 Flask、Django)时,通常可以配置字符编码,以适应应用的需求。
- 数据处理:
- 在处理数据文件、CSV 文件等时,字符编码也需要考虑,以确保数据的正确读取和写入。
- 在使用 pandas 等数据处理库时,通常能够处理不同字符编码的数据。
总体而言,字符编码在 Python 中的应用涵盖了从文本处理到网络通信、数据库操作、字符串处理等多个方面。正确处理字符编码有助于避免乱码问题,确保数据在不同环境中正确地传递和解释。
标签:编码,UTF,字符,Python,Unicode,ASCII From: https://www.cnblogs.com/Lea4ning/p/17880133.html