考过网络工程方面证书的应该都有所了解,关于数据传输,字符的编码都是通过二进制形式进行的
8个比特(bit)代表一个字节(byte)
二进制的八个比特位 最大表示 11111111 换成十进制 就是255,我们最常见到的ip地址表示 其实是 点分十进制表示方法,这样也是便于去记忆,分辨
现在常见的几种编码形式 有 ASCII UTF-8 Unicode等
ASCII 可以表示所有大小写字母,数字和一些符号
各个国家也有各自的编码,gb2312 ,Shift_JIS ,而Unicode可以吧各国的语言编码统一到一起
而 UTF-8的出现又可以大大节省编码的所需的存储空间,所以很多的文本文件通常都以UTF-8的形式来储存,但在编辑读取的时候通常都以 Unicode 编码在内存中暂存
网页传递的过程中也是将Unicode编码的内容先转换为UTF-8传递给浏览器,节约传送的时间
在python3中 字符串的编码是Unicode
str1="abc" 与 str2=b'abc'
str1 字符串使用Unicode编码,一个字符采用多个编码,
而str2表示的是byte类型的数据,一个字符代表一个字节
关于bytes转换为strings 使用decode()函数
>>> b'abc'.decode('gb2312')
'abc'
>>> b'abc'.decode('gb2312')
'abc'
>>> b'abc'.decode('ascii')
'abc'
>>> b'abc'.decode('utf-8')
'abc'
如果bytes
中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节:
decode('utf-8',errors='ignore')
如果.py
文件本身使用UTF-8编码,并且也申明了# -*- coding: utf-8 -*-
,打开命令提示符测试就可以正常显示中文:
encode()方法指定为bytes
Python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符
len()不仅可以统计字符数也可以统计字节数
len('你好'.encode('gb2312'))
>4
通常在写python脚本的时候,在开头应当注释
# -*- coding: utf-8 -*-
这是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
ord()
函数获取字符的整数表示
chr()
函数把编码转换为对应的字符