Latin-1,也被称为 ISO-8859-1,是一种字符编码标准
定义
Latin-1 是国际标准化组织(ISO)制定的一系列 8 位字符编码标准(ISO-8859)中的第一个,它使用单字节编码,每个字符由 8 位二进制数表示,因此最多可以表示 256 个不同的字符。
编码范围
基本 ASCII 字符:前 128 个字符(0x00 - 0x7F)与 ASCII 编码完全相同,涵盖了英语中常用的字母(大写和小写)、数字、标点符号以及一些控制字符,如换行符(LF)、回车符(CR)等。
扩展字符:后 128 个字符(0x80 - 0xFF)包含了一些西欧语言(如法语、德语、西班牙语等)中使用的带重音符号的字母、货币符号(如欧元符号 € 不在 Latin-1 中,但像英镑符号 £ 包含在内)以及一些特殊符号。
应用场景
历史遗留系统:在早期的计算机系统和网络协议中广泛使用,许多旧的软件和系统仍然依赖 Latin-1 编码来处理文本数据。例如,早期的 HTML 页面默认使用 Latin-1 编码。
HTTP 协议:在 HTTP 协议的早期版本中,Latin-1 是默认的字符编码。尽管现在 UTF-8 更为常用,但 Latin-1 仍然在某些情况下被使用。
简单文本处理:对于只包含西欧语言字符的简单文本文件,Latin-1 编码是一种简单且有效的选择,因为它的编码和解码过程相对简单,占用的存储空间也较小。
优点
简单高效:单字节编码方式使得编码和解码过程非常简单,处理速度快,占用的系统资源少。
兼容性好:与 ASCII 编码兼容,对于只包含 ASCII 字符的文本,Latin-1 编码不会改变其表示形式,因此可以与许多现有的 ASCII 处理程序兼容。
缺点
字符集有限:只能表示 256 个字符,无法涵盖世界上所有语言的字符,对于包含非西欧语言字符的文本,需要使用其他更广泛的编码标准,如 UTF-8。
缺乏统一标准:虽然 ISO 制定了 Latin-1 标准,但在不同的系统和软件中,对于一些特殊字符的解释可能存在差异,导致字符显示不一致的问题。
示例
# 将字符串编码为 Latin-1 字节串
text = "Café"
latin1_bytes = text.encode('latin1')
print(latin1_bytes) # 输出: b'Caf\xe9'
# 将 Latin-1 字节串解码为字符串
decoded_text = latin1_bytes.decode('latin1')
print(decoded_text) # 输出: Café
Latin-1编码在HTTP等场景的应用
769