关于python字符编码的问题

考过网络工程方面证书的应该都有所了解,关于数据传输,字符的编码都是通过二进制形式进行的

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()函数把编码转换为对应的字符

猜你喜欢

转载自blog.csdn.net/wszsdsd/article/details/84102248
今日推荐