字符编码
字符编码理论
字符编码的理论很多,但是结论很少,代码使用也很短>>>>:JasonJi博客
计算机内部存储数据的是二进制数,只认识0和1,但我们却敲出各式各样的字符,是因为我们有字符编码本,是存储着一个数字跟字符的对应关系。
字符编码发展史
1.一家独大
计算机是由美国人发明的,为了能够让计算机上识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码;记录了英文字母跟数字的对应关系
用8bit(1字节)来表示一个英文字符
2.群雄割据
中国人
GBK码:记录英文、中文与数字的对应关系
用至少16bit(2字节) 来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本
不同国家的文本数据无法直接交互 会出现"乱码"
"""
3.天下一统
unicode 万国码
兼容所有国家语言字符
中文起步就是两个字节来表示字符
utf系列:utf8 utf16 ...
utf系列用于优化unicode存储问题
英文还是采用一个字节 中文三个字节
字符编码实操
1.转文档时,遇到乱码不要慌,切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes 类型数据.decode()
3.python2与python3差异
python2默认的编码试ASCII
1.文件名
#encode:utf8
2.字符串前面加u
u'你好啊’
python 3 默认的编码是utf系列(unicode)
# -*- encoding:utf8 -*-
test= '工作就是要轻轻松松的工作'
# 编码
print(test.encode('utf8')) # # bytes类型在python直接看成二进制即可
"""b'\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xb0\xb1\xe6\x98\xaf\xe8
\xa6\x81\xe8\xbd\xbb\xe8\xbd\xbb\xe6\x9d\xbe\xe6\x9d\xbe\
xe7\x9a\x84\xe5\xb7\xa5\xe4\xbd\x9c'
"""
res = test.encode('gbk') # # 模拟网络数据
# 解码
res1 = res.decode('gbk')
print(res1) # 工作就是要轻轻松松的工作
"""
b'\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xb0\xb1\xe6\x98\xaf\xe8\
xa6\x81\xe8\xbd\xbb\xe8\xbd\xbb\xe6\x9d\xbe\xe6\x9d\xbe\
xe7\x9a\x84\xe5\xb7\xa5\xe4\xbd\x9c'
"""