1. ASCII:计算机世界的通用语言
第一次接触ASCII码是在大学计算机基础课上,当时教授用"65=A"这个简单例子让我瞬间理解了编码的本质。ASCII就像计算机世界的摩斯密码,用7位二进制数(0-127)为每个常见字符赋予唯一编号。你可能不知道,每次按下键盘,计算机接收到的其实都是这些数字代号。
ASCII最巧妙的设计在于它的分层结构:
- 0-31是控制字符,比如07(蜂鸣器响)、09(制表符)、13(回车)
- 32-126是可显示字符,包含大小写字母、数字和基础符号
- 127是删除键(DEL)
在Python中转换ASCII特别简单:
python复制# 字符转ASCII
print(ord('A')) # 输出65
# ASCII转字符
print(chr(65)) # 输出A
但ASCII的局限性很快显现:它无法表示中文、日文等非拉丁语系字符。我曾经处理过一份包含中文的CSV文件,用ASCII读取时全变成了乱码,这就是著名的"锟斤拷"问题。这种经历让我意识到:在全球化时代,我们需要更强大的编码方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Unicode:字符编码的"世界语"
2005年参与跨国项目时,Unicode拯救了我。当时需要同时处理英文、中文和阿拉伯语文档,Unicode就像语言的联合国,为每种字符分配唯一码点(Code Point)。比如:
- U+0041:拉丁字母A
- U+4E2D:汉字"中"
- U+0639:阿拉伯字母Ain
Unicode的编码空间划分为17个平面:
- 基本多文种平面(BMP):最常用的U+0000到U+FFFF
- 辅助平面:U+10000到U+10FFFF,包含emoji和罕见文字
Python处理Unicode的典型操作:
python复制text = "你好🌍"
# 获取码点
print([hex(ord(c)) for c in text]) # 输出['0x4f60', '0x597d', '0x1f30d']
# 编码为字节序列
bytes_data = text.encode('utf-8')
print(bytes_data) # 输出b'\xe4\xbd\xa0\xe5\xa5\xbd\xf0\x9f\x8c\x8d'
