字符串与编码
三种字符编码
- ASCII编码 :计算机由美国人发明,最早只有127个字符编码—— 大小写英文字母、数字和符号
- Unicode:把中文、日文、韩文等所有语言统一到一套编码中,2-4byte,现代OS和大多数语言都支持
- utf-8:可变长度编码,1-6byte。[使用utf-8编码,传输英文字符,节省空间]
计算机系统字符编码转化:
- 计算机内存中统一使用Unicode编码
- 保存到硬盘中或需要传输时,转化为UTF-8编码
浏览网页:
服务器把动态生成的Unicode内容,转化为UTF-8在传输到浏览器
记事本编辑:
从文本读取UTF-8被转换为Unicode到内存中
编辑完成保存时,将Unicode转为UTF-8保存到文件中
Python中的字符串
- Python3中以Unicode编码,支持多语言
- 以Unicode表示的str通过encode()方法,可以编码为指定的bytes
- 网络或磁盘读取的字节流bytes,通过decode()方法,转化为Unicode表示的str
- 如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节
- 纯英文的str可以用ASCII编码为bytes
- 含有中文的str可以用UTF-8编码为bytes
- 含有中文的str无法用ASCII编码 —— 中文编码的范围超过了ASCII编码的范围,Python会报错
- 如果.py文件本身使用UTF-8编码,并且也申明了# -- coding: utf-8 --,打开命令提示符测试就可以正常显示中文:
Python格式化
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
tips:如果不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串