Python笔记-计算机编码

一、字符编码

1.1 ASCII和Unicode出现

- 计算机只能处理数字
- 最早发明ASCII用1个字节表示英文、数字、符号;
- 中国人发明GB2312用至少2个字节表示汉字;
- 为了统一上百种语言编码,Unicode应运而生,通常用2个字节表示字符。

1.2 UTF-8出现

- 若整篇英语文档用Unicode编码,会多出一倍存储空间,需要“可变长编码”UTF-8;
- 英文用1个字节,汉字通常3字节,生僻字用4-6字节等;
- ASCII可看成是UTF-8组成部分。

1.3 举例:

- 文件被读到内存中用Unicode编码,而保持在硬盘或传输时,用UTF-8;
- 浏览网页,服务器会把Unicode内容转换成UTF-8传输。网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。

二、Python字符串

2.1 Python3字符串采用Unicode编码

函数ord()获取编码和chr()转换字符:

print("ord('A')=%s, ord('中')=%s" % (ord('A'), ord('中'))) 
print("chr(66)=%s, chr(25991)=%s" % (chr(66), chr(25991)))
ord('A')=65, ord('中')=20013
chr(66)=B, chr(25991)=文

2.2 编/解码操作

Python字符串类型为str,内存中Unicode表示。

  • 编码: str转换为bytes类型
print('abc'.encode('utf-8'))
print('abc'.encode('ascii'))
print('中文'.encode('utf-8'))
b'abc'
b'abc'
b'\xe4\xb8\xad\xe6\x96\x87'
  • 解码:bytes类型转换为字符
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
print(b'abc'.decode('ascii'))
中文
abc

2.3 计算字符串长度

print(len('abc'))
print(len('中文'))
print(len('abc'.encode('utf-8')))
print(len('中文'.encode('utf-8')))
3
2
3
6

2.4 坚持使用utf-8编码

  • python源代码加上# -- coding: utf-8 --,确保解释器可以读懂
  • 保存源代码时使用"Encode in UTF-8 without BOM"
  • BOM——Byte Order Mark,就是字节序标记。UTF-8不需要BOM头。

2.5 python字符串格式化

print('Age: %s. Gender: %s' % (25, True))
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))
Age: 25. Gender: True
Hello, 小明, 成绩提升了 17.1%

————————————————————————
资料来源:廖雪峰网站 https://www.liaoxuefeng.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值