python中的字符编码问题
2018-10-09 本文已影响4人
CurryCoder
-
1.字符编码
- 1.计算机只能处理数字,如果要处理文本,必须把文本转换为数字才能处理
- 2.1个字节能表示的最大整数是255,2个字节能表示的最大整数是65535
- 3.最早只有127个字母被编码到计算机中,这个编码被称为ASCII码,比如A的编码是65,a的编码是97
-
2.Unicode将所有语言都统一到一套编码中,就不会出现乱码问题
- 1.最常用的是用两个字节表示一个字符,生僻的字符需要4个字节,现在操作系统和绝大多数语言都支持Unicode
- ASCII编码与Unicode编码的区别: ASCII编码是1个字节,Unicode编码通常是2个字节
- 3.汉字中已经超过ASCII编码的范围,用Unicode编码是十进制的20013
- 4.字母A的ASCII编码是十进制65,二进制01000001,A的Unicode编码是 0000000001000001
-
3.如果文本基本全部是英文时,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储与传输上十分不划算
- 1.本着节约主义,将Unicode编码转化为可变长编码UTF-8编码
- 2.UTF-8编码把一个Unicode字符根据不同的数字大写编码成1-6个字节
- 3.常用英文字母被编码成1个字节,汉字通常是3个字节,生僻字符被编码成4-6个字节
-
4.ASCII编码可被看成UTF-8编码的一部分
图1.png
-
4.总结
- 1.在计算机内存中,统一使用Unicode编码
- 2.当需要保存到硬盘或需要传输时,转化为UTF-8编码
-
5.用记事本编辑时,从文件读取的UTF-8字符被转换为Unicode字符到内存中,编辑完成时,再把Unicode转换为UTF-8保存到文件
图2.png -
6.浏览网页时,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器
图3.png