今日内容概要
今日内容详细
字符编码
计算机是基于电工作的,而电信号只有高低电平两种状态,也就是说计算机只认识两种状态,认为的定义为数字0和1即二进制。
人类的字符与数字之间存在对应关系,相当于发电报彼此携带的密码本一样。
字符编码发展史
一家独大
因为计算机是美国人发明的,计算机只认识01二进制,为了让计算机认识英文,美国人制定了一个由二进制数字组合与英文字符的对应关系>>>"字符编码表"
ASCII码表:记录了英文字符与数字的对应关系,用一个字节来表示英文字符
1bytes = 8bit # 2的八次方 256
英文字符跟符号总共加起来不超过127个
该阶段的计算机只认识英文不认识其他国家的字符
群星割据
渐渐地其他国家也开始使用计算机,为了能让计算机认识本国文字,各自制定了不同的编码表
中国人GBK编码表:记录了中文字符、英文字符与数字对应关系,用两个字节来表示中文 一个字节表示英文字符
2bytes = 16bit # 2的十六次方 65536 有时候针对生僻字无法表示 需要更多位数3bytes 4bytes
韩国人Euc_kr编码表:记录了韩文字符、英文字符与数字的对应关系
日本人shift_JIS编码表:记录了日文字符、英文字符与数字的对应关系
该阶段的计算机不同国家使用不同的编码表
天下一统
群雄割据阶段有一个不可忽视的问题:不同国家计算机之间数据无法交互,为此人类发明了unicode编码表。
unicode编码表(万国码):内部兼容万国语言,所有的字符全部采用2bytes来表示 如果不够则增加位数。但是这也会出现一个问题,针对纯英文的文本数据原本只需要比如1G的容量,那么采用了unicode之后就需要2G的容量,读取文件的时间也翻倍了,这时就得靠utf8编码
utf8编码(unicode转换版本):会对unicode编码做优化,英文还是用1bytes来表示。 # 内存使用unicode兼容万国 存储到硬盘使用utf8节省资源
该阶段的计算机不同国家也可以无障碍的交互
结论:现在的文本文件默认都使用utf8编码