字符编码
字符编码
什么是字符编码?????
由于计算机内部只识别二进制,但是用户在使用计算机的时候,却可以看到各式各样的语言文字符,说明在计算机内部存在可以将字符转换成人类能读懂的字符。字符编码内部记录了人类字符与数字对应关系的数据。
1. 字符编码发展史
"""
首先:一家独大的局面,世界上第一台计算机在美国发明,美国人为了让计算机识别英文字符,设计了ASCII码表:里面记录了 英文字符 与数字的对应关系,用最小单元的8位二进制来记录对应关系,用一个byte来表示对应关系,
'''所有的英文字符和符号加起来其实不超过127个,之所以使用8位是为了后续发现新的语言'''
"""
下面附上ASCII码表
其次各国为了让计算机识别自己国家的语言,分别设计了各自的编码表
'''
中国
GBK码:记录了英文,中文与数字的对应关系。
对于英文使用一个字节
对于中文使用两个甚至更多字节
(两个字节不够表示出所有的中文,遇到生僻字则需要更多位来表示)
'''
'''
日本
shift_JIS:记录了日文,英文与数字的对应关系
韩国
Euc_kr码:记录了韩文,英文与数字的对应关系
'''
最后为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要编码统一。
unicode(万国码) 1994
统一使用两个及以上字符记录与数字的对应关系
utf8(unicode transformation format万国码的优化版本)
将英文还是用一个字节存储
将中文使用三个字节或更多字节存储
2. 字符编码实操
1.如何解决文件乱码的情况
当初以什么编码编写,打开的时候就以什么解码。
2.python解释器版本不同带来的差异
python2.x 内部使用的编码默认是ASCII
# 加个文件头
coding:utf8
# 在python2中定义字符串前面要加一个小 u
s = u'你好啊啊啊啊啊'
python3.x 内部使用utf8
tips:
可以自定义模板添加文件头
file->Editor->file and Code Templates->Python Script,在里面添加想要的文件头即可。
3.编码与解码
编码:
将人类能够读懂的字符按照指定的编码转换成数字(计算机能识别的二进制)
s = '每天不要想太多'
res = s.encode('utf8')
print(res)
解码:
将数字按照指定的编码转换成人类能够读懂的字符
res1 = res.decode('gbk')
print(res1)
s = b'jasongNB123' # 当字符串中只有英文和数字相关字符时,前面加个 b 可以直接转换为二进制类型。