字符编码及应用

1.字符编码
计算机内部存储数据都是以二进制数字的形式储存
计算机基于点工作 而电信号只有高低电频两种状态
我们人为的将高低电频定义为数字1
低电频数字为0
假如0代表你
1代表我
00 01 10 11
000 001 ....
单位换算
比特位(二进制数的个数)
8bit = 1bytes 00000000相当于2**8种可能
1024B = 1kB
1024KB = 1MB
1024MB = 1G
1024GB = 1TB
1024TB = 1PB
我们强调的字符编码仅限于文本文件,其他文件都不适用

为什么我们人类在使用计算机输入字符的时候,电脑展示
是人类能看懂的字符,而计算机内部只识别01二进制?
字符编码表规定了人类的字符与数字之间的对应关系


字符编码表经历了大概三个阶段
一家独大
计算机是由美国人发明的,美国人需要计算机识别英文,所以
美国人就发明了字符编码表(ASCII码),这个字符编码表
记录了英文与数字的对应关系
1bytes 来表示所有的英文及符号。 2**8=256种
所有英文字母加起来都不超过128种可能,留有余地
群雄割据
中国
中国人为了计算机识别中文,发明了我们自己的编码表(GBK码)
他里面记录了中文 英文 与数字的对应关系
GBK用2个bytes(远远不够)来表示中文及符号
生僻字可能会使用更多的bytes.
日本
日本人为了计算机能够识别日文,发明了(shift_JIS码)
记录了日文 英文与数字的对应关系
韩国
韩国人为了为了计算机能够识别韩文,发明了(Euc_kr码)
记录了韩文 英文与数字的对应关系

天下一统
unicode万国码 几乎是所有国家文字与数字对应的关系
所有的字符用2bytes表示,不够也是继续增加
最后由引进utf8()
utf8转换格式 其实是缩写(unicode transformation format)
英文还是用1butes
中文改用3bytes
内存使用的编码表是unicode 硬盘使用的是utf8
文本文件编码统一使用utf8


2.字符编码的实际应用
解决文件乱码的核心,文件以什么编码存的就以什么取
编码与解码
编码:将人类的字符按照指定的编码转换成计算机能够识别的数据
encode()
print(res.encode('gbk'))
解码:将计算机能够识别的数据
按照指定的编码转换成人类能够读懂的字符
decode()
print(res.decode('gbk'))
bytes类型 在python中直接看成二进制
python解释器版本不同她所对应的编码是否不同?
3python不用版本的解释器默认的编码不同
python2默认的是ASCII码,在python2中定义字符串
需要加字母u和文件头 # coding:utf8

# coding:utf8
name = u'你好‘ # 相当于name = '你好’



python3默认的是utf8
上一篇:SpringCloud Alibaba实战(3:存储设计与基础架构设计)


下一篇:web项目出现中文乱码的解决措施