字符串和编码
1. 字符编码基础
1.1 编码的必要性
- 计算机只能处理数字,必须将文本转换为数字才能处理
- 最早的计算机使用8比特(bit)作为1字节(byte),单字节最大表示255
1.2 ASCII编码
- 美国标准,包含127个字符(英文字母、数字、符号)
- 例如:A=65(01000001),z=122
1.3 多语言编码问题
- 中文需要GB2312(至少2字节)
- 日文使用Shift_JIS,韩文使用Euc-kr
- 多语言混合时会出现乱码
1.4 Unicode解决方案
- 统一所有语言的编码标准
- 最常用的是UTF-16(2字节/字符,生僻字4字节)
- 现代操作系统和编程语言普遍支持
1.5 UTF-8编码
- Unicode的可变长编码实现
- 英文字母:1字节
- 汉字:通常3字节
- 生僻字符:4-6字节
- 兼容ASCII(ASCII是UTF-8的子集)
2. 编码工作方式
- 内存中:统一使用Unicode
- 存储/传输时:转换为UTF-8
- 网页通常使用UTF-8编码(
<meta charset="UTF-8">)
3. Python字符串处理
3.1 基本特性
- Python 3字符串默认使用Unicode编码
3.2 字符编码转换
ord():获取字符的Unicode码点chr():将码点转换为字符
3.3 十六进制表示
3.4 bytes类型
- 网络传输/磁盘存储需要转换为bytes
- 使用
b前缀表示
3.5 编码转换方法
encode():str → bytesdecode():bytes → str
3.6 错误处理
3.7 长度计算
3.8 源代码编码
- 包含中文的Python文件应保存为UTF-8
- 文件开头添加编码声明:
4. 字符串格式化
4.1 %格式化(传统方式)
4.2 format()方法
4.3 f-string(Python 3.6+推荐)
5. 最佳实践
- 始终使用UTF-8编码处理文本
- 优先使用f-string进行字符串格式化
- 处理文件I/O时明确指定编码
- 在Python 3中避免使用str和bytes混用
6. 练习示例
7. 总结
- Python 3字符串原生支持Unicode,完美处理多语言
- 内存使用Unicode,存储/传输使用UTF-8
- 字符串格式化推荐使用f-string(Python 3.6+)
- 始终明确编码转换,避免乱码问题

