字符编码
作者:互联网
1.前提
字符编码的研究只针对文本文件
2.如何理解字符编码
计算机是基于电工作的 电信号只有高低电平两种状态 我人为的定义为0和1
也就意味着计算机的世界其实只认识二进制数字0和1
但是我们却可以使用计算机打出各种人类的字符
"""
人类字符 转换 二级制数
字符编码:记录了字符与数字的对应
"""
ps:课外扩展
比特位 bit 一个二进制位
8bit = 1bytes
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
3.字符编码发展史
一家独大
计算机是有美国人发明的 为了让计算机识别英文
ASCII码:记录了英文字符与数字的对应关系
1bytes表示英文(英文字母、英文符号)
ps:此时的计算机只能识别英文
群雄割据
中国人
为了让计算机识别中文
GBK码:记录了英文、中文与数字的对应关系
1bytes表示英文
2bytes表示中文(很多中文都是3以上)
日本人
为了让计算机识别日文
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
为了让计算机识别韩文
Euc_kr码:记录了英文、韩文与数字的对应关系
ps:各个国家的计算机使用的编码表不一样 彼此无法直接交互(数据乱码)
天下一统
unicode万国码
兼容所有国家的字符
所有的字符都是至少2bytes起步存储
utf家族(utf8)
为了优化unicode存储机制
1bytes存储英文
3bytes存储中文
字符编码实战
1.乱码问题如何解决
数据当初是以什么编码编的就以什么编码解
2.编码与解码的含义
'''只有字符串可以做编码处理 编码之后数据相当于是二进制 可以基于网络发送'''
编码
将人类的字符按照指定的编码编码成计算机能够读懂的语言
解码
将计算机能够读懂的语言按照指定的编码解码成人类的字符
res = '周末班 一天就很累'
ret1 = res.encode('utf8') # 编码
print(ret1) # b'\xe5\x91\xa8...'
ret2 = ret1.decode('utf8') # 解码
print(ret2) # 周末班 一天就很累
3.不同版本解释器字符编码有区别
python2默认编码是ASCII
3.1.文件头
# coding:utf8
3.2.定义字符串前面必须要加字母u
res = u'周末班 一天就很累'
python3默认编码是utf家族
不需要文件头和字母u
ps:有时候为了兼容 也可能在python3中使用文件头和字母u(以前是的)
标签:编码,1bytes,计算机,字符,utf8,英文 来源: https://www.cnblogs.com/A121/p/16581048.html